0

我希望有人可以帮助我,我想做的是让 Google 表单创建一个新文档,并在编辑表单时通过电子邮件发送该 pdf。

我了解当您编辑表单时,电子表格中的脚本不会运行,因此我已将脚本放入表单中,这就是我遇到问题的地方。我无法让脚本读取表单上重新提交的值,它只是在返回时不断出现“未定义”

这是我到目前为止得到的脚本。

function Test(e) {

  var form = FormApp.openById('****Form Key****'); //Enter Form ID here

var docTemplate = "***doc to be used***";  
   var docName      = "***Name of document***";

   var formResponse = form.getResponses();

  var one =  e.response;  //I have tried e.value but does not pull through
  var two =  e.response;  // Column 2

  var copyId = DocsList.getFileById(docTemplate)
                .makeCopy(docName)
                .getId();
// Open the temporary document
   var copyDoc = DocumentApp.openById(copyId);
// Get the document’s body section
   var copyBody = copyDoc.getActiveSection(); 

  copyBody.replaceText('one', one);
  copyBody.replaceText('two', two);

 // Save and close the temporary document
   copyDoc.saveAndClose();

// Convert temporary document to PDF by using the getAs blob conversion
   var pdf = DocsList.getFileById(copyId).getAs("application/pdf");  

//Sends the email
  var email_Address =  "***Email Address***"
     var subject = "***Subject";
  var body    = "**Body***"; 
  MailApp.sendEmail(email_Address,  subject, body, {attachments: pdf});  

}}

任何帮助将不胜感激,因为我已经坚持了一段时间。谢谢你。

4

2 回答 2

1

在表单响应触发器函数中,事件是FormResponse 类的一个实例。正因为如此,您无需打开表单或获得回复……您只需将一个交给您,您可以通过e.response. (请参阅了解事件中的表单响应事件。)

// Handle form response event
// This function must be a Form Response Trigger, attached to
// a Form (not a Spreadsheet).
function rightTest( e ) {
  var formResponses = e.response.getItemResponses(); // array of responses
  var one = formResponses[0];
  var two = formResponses[1];
  ...
}
于 2014-01-10T03:21:33.903 回答
1

截至 2015 年 4 月,不支持 DocsList,只需替换 DocsList。与 DriveApp。如何在我的代码中将 DocsList 更新为 DriveApp

于 2015-04-22T14:26:09.413 回答