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

如何通过脚本从Google Form提取答复并写入新Google Spreadsheet?

问题原因

  • 核心逻辑缺失:当前脚本仅实现了新建电子表格、移动到指定Drive文件夹的功能,完全没有编写提取表单答复、写入表格的相关代码,因此生成的表格为空。
  • 存在无效冗余代码:var form = FormApp.openById('1ohh3SYGm0F1wzIGeQenk6Vt-epeXY2UHgdYXtH5knWA'),getItemResponses,newSpreadsheet这行代码没有任何实际作用,重复声明form变量也属于多余操作,可直接删除。

修正后的完整脚本

function getItemResponses() {
  // 打开指定表单
  var form = FormApp.openById('1ohh3SYGm0F1wzIGeQenk6Vt-epeXY2UHgdYXtH5knWA');
  
  // 生成新表格名称
  var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MM-yyyy' 'HH:mm:ss");
  var name = form.getTitle() + " Copy " + formattedDate;

  // 获取目标Drive文件夹
  var destination = DriveApp.getFolderById("1u6HQQUWXKIkpakInbS9u6opWK10T91Ez");

  // 新建电子表格
  var newSpreadsheet = SpreadsheetApp.create(name);
  var sheet = newSpreadsheet.getActiveSheet();

  // --- 新增:提取表单答复并写入表格 ---
  // 获取所有答复
  var allResponses = form.getResponses();
  if (allResponses.length > 0) {
    // 先提取表头(所有问题的标题)
    var items = form.getItems();
    var headers = items.map(item => item.getTitle());
    sheet.appendRow(headers);

    // 遍历每个答复,提取内容写入行
    allResponses.forEach(response => {
      var itemResponses = response.getItemResponses();
      var rowData = itemResponses.map(itemRes => itemRes.getResponse());
      sheet.appendRow(rowData);
    });
  }
  // --- 答复写入逻辑结束 ---

  // 将新表格移动到指定文件夹
  var newFile = DriveApp.getFileById(newSpreadsheet.getId());
  var parents = newFile.getParents();
  while (parents.hasNext()) {
    var parent = parents.next();
    parent.removeFile(newFile);
  }
  destination.addFile(newFile);
}

注意事项

  • 如果表单答复量较大,建议改用setValues批量写入,而非逐行appendRow,可以提升运行效率。
  • 时区可根据你的实际需求调整Utilities.formatDate中的时区参数,避免时间显示偏差。

内容的提问来源于stack exchange,提问作者Sam F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:36:03