1

感谢大家提供这么棒的资源。我是谷歌脚本的新手,它对我帮助很大。

我正在尝试创建一个脚本,该脚本采用谷歌表单信息,创建一个新电子表格,将该数据导入新电子表格以进行计算并制作图表,然后将该表格的 PDF 通过电子邮件发送给表单用户。

我以为我接近了,但遇到了一个问题。数据导入到新的电子表格,但数据没有显示在我电子邮件的 PDF 中。

几个问题; 你们是否看到我可以对代码进行任何更改以帮助 PDF 显示数据?有没有更好或更简单的方法来完成我想做的事情?

谢谢!!

//Template Info
  var docTemplate = "myssID";

  var docName = "MotionControlReport";

function formSubmitCreate(e) {

  //Variables

  var userOrientation = e.values[1];
  var userStroke = e.values[2];
  var userStrokeUnits = e.values[3];
  var userName = e.values[11];
  var userCompany = e.values[12];
  var userEmail = e.values[13];
  var userPhone = e.values[14];

  //Template Info
  var copyId = DocsList.getFileById(docTemplate).makeCopy(docName+' for '+userName).getId();
  var copyDoc = SpreadsheetApp.openById(copyId);
  var copyBody = copyDoc.getActiveSheet();

  copyBody.getRange(1, 1).setValue(userName);
  copyBody.getRange(1, 2).setValue(userCompany);
  copyBody.getRange(1, 3).setValue(userEmail);
  copyBody.getRange(1, 4).setValue(userPhone);
  copyBody.getRange(1, 5).setValue(userOrientation);
  copyBody.getRange(1, 6).setValue(userStroke);
  copyBody.getRange(2, 6).setValue(userStrokeUnits);

  //Save as PDF and send e-mail
  var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
  var subject = "Motion Control Report";
  var body = userName + ",  Thank you very much for using our online Linear Motion Sizing Tool.";
  MailApp.sendEmail(userEmail, subject, body, {htmlBody: body, attachments: pdf});
  //Deletes temporary Document
  DocsList.getFileById(copyId).setTrashed(true);
}
4

1 回答 1

3

您忘记刷新电子表格,数据从缓存中保存的时间稍晚于转换为 PDF 的时间。我检查了您的代码(带有冲洗),它运行良好,并为我从表单中以 PDF 格式邮寄正确的数据。

电子表格应用程序().flush()

于 2012-11-28T15:41:37.847 回答