如何通过Google Apps Script列出Google Form的发布URL
批量获取Google Drive中表单的发布URL并写入表格
你当前的代码已经能筛选出指定文件夹里的所有Google表单,但获取发布URL的方式有误——FormApp.getActiveForm()只能获取当前脚本绑定的表单,无法遍历Drive里的其他表单。以下是修改后的完整代码,可同时获取表单名称、ID、大小和发布URL:
function listFormURL(){ var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAPPING FORM'); var folder = DriveApp.getFolderById('1Oj-o5jxxxxxxxxxxxxxxxxxxxJ3fcA'); var list = []; // 修改表头,增加URL列 list.push(['Name','ID','Size','URL']); var files = folder.getFilesByType(MimeType.GOOGLE_FORMS); while (files.hasNext()){ var file = files.next(); // 通过表单ID打开对应的Form对象 var form = FormApp.openById(file.getId()); // 获取发布URL,若未发布则返回"未发布" var formUrl = form.getPublishedUrl() || "未发布"; var row = []; row.push(file.getName(), file.getId(), file.getSize(), formUrl); list.push(row); } // 写入数据时匹配4列的宽度 sh.getRange(1, 1, list.length, list[0].length).setValues(list); }
关键修改说明:
- 调整表头数组,新增
URL列,确保后续数据列数匹配 - 移除了无效的
FormApp.getActiveForm()调用,改为在循环中通过FormApp.openById(file.getId())逐个打开Drive中的表单文件 - 调用
getPublishedUrl()获取发布链接,用|| "未发布"处理表单未发布的情况,避免表格出现空值 - 将获取到的
formUrl加入每行数据,同步写入表格
内容的提问来源于stack exchange,提问作者PSAB Plalangan
相关产品推荐
相关产品推荐

