Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 添加节省pdf选项气体_Google Apps Script - Fatal编程技术网

Google apps script 添加节省pdf选项气体

Google apps script 添加节省pdf选项气体,google-apps-script,Google Apps Script,一年前,在另一位用户的帮助下,我能够使用谷歌应用程序脚本获取表单响应并通过电子邮件发送pdf(代码如下) 我现在需要将pdf保存到特定文件夹中 我还需要添加一个链接到谷歌表单中保存的pdf。这可能吗 var docTemplate = "doc ID"; var docName = "Vehicle check with images"; function onFormSubmit(e) { var replaceTextToImage = fun

一年前,在另一位用户的帮助下,我能够使用谷歌应用程序脚本获取表单响应并通过电子邮件发送pdf(代码如下)

我现在需要将pdf保存到特定文件夹中 我还需要添加一个链接到谷歌表单中保存的pdf。这可能吗

var docTemplate = "doc ID"; 
var docName = "Vehicle check with images";

function onFormSubmit(e) {
  var replaceTextToImage = function(body, searchText, fileId) {
    var width = 300; // Please set this.
    var blob = DriveApp.getFileById(fileId).getBlob();
    var r = body.findText(searchText).getElement();
    r.asText().setText("");
    var img = r.getParent().asParagraph().insertInlineImage(0, blob);
    var w = img.getWidth();
    var h = img.getHeight();
    img.setWidth(width);
    img.setHeight(width * h / w);
  }

  //Get information from form and set as variables
  var email_address = "myemailaddress@here.com";
  var vehicle_vrn = e.values[1];
  var front_desc = e.values[2];
  var front_image = e.values[3].split("=")[1];
  var rear_desc = e.values[4];
  var rear_image = e.values[5].split("=")[1];
  var driver_desc = e.values[6];
  var driver_image = e.values[7].split("=")[1];
  var passenger_desc = e.values[8];
  var passenger_image = e.values[9].split("=")[1];

  // Get document template, copy it as a new temp doc, and save the Doc’s id
  var copyId = DriveApp.getFileById(docTemplate)
  .makeCopy(docName+' for '+vehicle_vrn)
  .getId();
  // Open the temporary document
  var copyDoc = DocumentApp.openById(copyId);
  // Get the document’s body section
  var copyBody = copyDoc.getBody();

  copyBody.replaceText('keyVrn', vehicle_vrn);
  copyBody.replaceText('keyFrontdesc', front_desc);
  replaceTextToImage(copyBody, 'keyFrontimage', front_image);
  copyBody.replaceText('keyReardesc', rear_desc);
  replaceTextToImage(copyBody, 'keyRearimage', rear_image);
  copyBody.replaceText('keyDriversdesc', driver_desc);
  replaceTextToImage(copyBody, 'keyDriversimage', driver_image);
  copyBody.replaceText('keyPassdesc', passenger_desc);
  replaceTextToImage(copyBody, 'keyPassimage', passenger_image);

  copyDoc.saveAndClose();
  var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
  var subject = "sample attachment file";
  var body = "sample text: " + vehicle_vrn + "";
  MailApp.sendEmail(email_address, subject, body, {htmlBody: body, attachments: pdf});

  DriveApp.getFileById(copyId).setTrashed(true);
}```

我相信你的目标如下

  • 您希望将PDF数据作为文件保存到特定文件夹中
  • 您希望检索保存的PDF文件的URL,并将其放在电子表格的特定列中
修改点:
  • 为了将PDF数据(在您的情况下,它是一个blob)保存到特定文件夹中,您可以使用
    DriveApp.getFolderById(“folderId”).createFile(PDF)
  • 要检索所创建文件的URL,可以使用
    getUrl()
  • 以便将URL放入电子表格的特定列。
    • 您希望将该值放入最后一行的下一列
修改脚本: 请按如下方式修改您的脚本。使用此修改后的脚本之前,请设置文件夹ID、电子表格ID和工作表名称

发件人: 致:
  • 当您运行脚本时,
    pdf
    将作为文件创建到文件夹
    #####folderId####
    中,并且
    url
    将放在电子表格
    #sheetName########sheetid###spreadCode
注:
  • 如果您想给出PDF文件的文件名,请修改如下

    •   var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
      
    •   var pdf = DriveApp.getFileById(copyId).getAs("application/pdf").setName("###filename###");
      
参考资料:

虽然我不确定这是否是您期望的方向,例如,将
SpreadsheetApp.openById(“spreadsheetId”).getSheetByName(“sheetName”).appendRow([DriveApp.getFolderById(“folderId”).createFile(pdf.getUrl()])
放在
var pdf=DriveApp.getFileById(copyId.getAs(“application/pdf”)之后如何?这样,PDF文件的URL将附加到“sheetName”页中。这个怎么样?@Tanaike谢谢你的快速回复。您将pdf保存到文件夹的答案非常好,我也尝试过类似的方法,但我错了。我希望有可能获得创建的pdf文件的url,并将其放在下一列的响应表中(可以是指定列)。这虽然不那么重要,但如果能够做到的话是有益的。谢谢你在上面写的剧本,我会试一试。谢谢你的回复。从你的回复中,我提出了一个修改后的脚本作为答案。你能确认一下吗?如果这不是你期望的方向,我道歉。这太完美了。谢谢你,我真的很感谢你的帮助。@Steve Haddley谢谢你的回复。我很高兴你的问题解决了。也谢谢你。
  var pdf = DriveApp.getFileById(copyId).getAs("application/pdf");
  var pdf = DriveApp.getFileById(copyId).getAs("application/pdf").setName("###filename###");