首页 > 解决方案 > Google Apps 脚本未从 Google 表单传输多行数据

问题描述

我编写了以下代码来从表单响应中生成 pdf。但是,我的多行响应 (genRemarks) 和我的分数 (tSCR) 没有与我创建的模板文件一起使用,而我的时间戳 (cDate) 是。

function onSubmit(e) {
  const rg = e.range;
  const sh = rg.getSheet();

  const cDate = e.namedValues['Timestamp'][0];
  const cBodyComments = e.namedValues['genRemarks'][0];

  //Consequential/Calculated Data

  const cUCS = e.namedValues['Uniform Compliance Score'][0];
  const cPCS = e.namedValues['Protocol Compliance Score'][0];
  const cDCR = e.namedValues['Dignified Conduct Rating'][0];
  const cESR = e.namedValues['Empathy/Sincerity Rating'][0];
  const cSWS = e.namedValues['Structured Work Score'][0];
  const cCCOR = e.namedValues['Chain of Command Observed Rating'][0];
  const cWER = e.namedValues['Work Environment Rating'][0];
  const cOTOTS = e.namedValues['On Task and On Time Score'][0];

  var tSCR = cUCS + cPCS + cDCR + cESR + cSWS + cCCOR + cWER + cOTOTS;

  const invoiceFolderID = '[omitted due to sensitive data]';
  const invoiceFolder = DriveApp.getFolderById(invoiceFolderID);

  const templateFileID = '[omitted due to sensitive data]';
  const newFilename = 'OCSO Report_' + cDate;

  const newReportFileID = DriveApp.getFileById(templateFileID).makeCopy(newFilename, invoiceFolder).getId();;

  var document = DocumentApp.openById(newReportFileID);
  var body = document.getBody();

  //start template replacement

  body.replaceText('{{Timestamp}}', cDate);
  body.replaceText('{{genRemarks}}', cBodyComments);
  body.replaceText('{{Score}}', tSCR);

  document.saveAndClose();
}

我对应用程序脚本有点新,所以欢迎任何帮助

标签: google-apps-script

解决方案


尝试将 this: 更改const cBodyComments = e.namedValues['genRemarks'][0];为 this:const cBodyComments = e.namedValues['genRemarks'][1];或根据您对

function onFormSubmit(e) {
  Logger.log(JSON.stringified(e));
}

我相信我看到它们出现在非零列中的原因是因为我多次编辑了表单并最终得到了多个具有相同名称的列,所以这可能不是问题。如果这不是您的问题,请告诉我,我将删除我的答案。


推荐阅读