Google apps script 添加节省pdf选项气体
一年前,在另一位用户的帮助下,我能够使用谷歌应用程序脚本获取表单响应并通过电子邮件发送pdf(代码如下) 我现在需要将pdf保存到特定文件夹中 我还需要添加一个链接到谷歌表单中保存的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
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放入电子表格的特定列。
- 您希望将该值放入最后一行的下一列
- 当您运行脚本时,
将作为文件创建到文件夹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###");