You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apps Script通过ID获取Google Form标题?视图ID适配故障

解决Google Apps Script无法获取视图模式Google Form标题的问题

问题原因

你遇到的问题是因为视图模式Google Form里的ID(即https://docs.google.com/forms/d/e/[ID]/viewform中的ID)并不是Drive文件的ID,而是表单的发布视图专属ID,DriveApp.getFileById()自然找不到对应的文件。你之前修改的var file = DriveApp.getFileById(form.getId());写法无效,是因为代码里根本没定义form对象。

修复后的脚本

下面是修改后的完整脚本,增加了对表单视图ID的处理逻辑:

/** START List of File Names by FileIDs */
function getFileNames() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("P12"); // 指定目标工作表
  const ids = sheet.getRange("A1:a").getValues().flat().filter(String); // 提取A列的所有ID
  const table = [];

  for (let id of ids) {
    let name = '';
    try {
      // 先尝试用Drive服务获取普通文件标题
      const file = DriveApp.getFileById(id);
      name = file.getName();
    } catch(e) {
      // Drive获取失败,尝试处理Google Form视图ID
      try {
        // 构造表单视图链接并打开
        const formUrl = `https://docs.google.com/forms/d/e/${id}/viewform`;
        const form = FormApp.openByUrl(formUrl);
        name = form.getTitle();
      } catch(formErr) {
        // 两种方式都失败,留空
        name = '';
      }
    }
    table.push([name]);
  }

  // 将结果写入D列(第4列)
  sheet.getRange(1, 4, table.length, table[0].length).setValues(table);
}
/** END List of File Names by FileIDs */

关键修改说明

  • 增加双层try-catch逻辑:先尝试用Drive服务获取普通文件标题,失败后自动切换到Form服务处理表单视图ID
  • 针对表单视图ID,通过构造完整的视图链接,用FormApp.openByUrl()打开表单,再调用getTitle()获取标题
  • 统一变量声明方式,让代码结构更清晰

内容的提问来源于stack exchange,提问作者Felipe S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:14:55