从导致问题的多行单元格条目构建 pdf 导出的名称
Constructing the name of a pdf export from multi-line cell entries causing problems
我对脚本编写还很陌生,一直在边做边学(或者更准确地说,是找到慷慨的人为我做这些事),所以真的了解不多。如果代码错误、愚蠢或格式不正确,我们深表歉意。
我有这段代码应该以 PDF 格式导出 sheet 并根据特定单元格中的字符串命名导出。在您将多行单元格条目放入组合之前,这种方法效果很好。导致问题的代码如下,导致问题的位是 engine[0]
:
function Generate_Form() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName('JobRequestForm'));
var tpjlr = ss.getRange("H8:I8").getValue();
if (tpjlr.length > 0) {
var email = "x@jaguarlandrover.com"
var email1 = ss.getRange("H5:I5").getValue() + ("@jaguarlandrover.com");
var email2 = ss.getRange("H6:I6").getValue() + ("@jaguarlandrover.com");
}
var subject = "Job request from " +ss.getRangeByName("D5:E5").getValue()+ "_" +ss.getRangeByName("D13:E13").getValue()+ "_" +ss.getRangeByName("D14:E14").getValue()+ "_TPJLR_" +ss.getRangeByName("H8:I8").getValue()+ "_" +ss.getRangeByName("D7:E7").getValue();
var body = "Objective of the request:- " + ss.getRange("D18:I18").getValue();
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=letter' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true&source=labnol' // fit to page width, false for actual size
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&gid='+ss.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
var engine = ss.getRange("D15:E15").getValue().split("\n");
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
var response = UrlFetchApp.fetch(url + url_ext, {
headers: {
'Authorization': 'Bearer ' + token
}
}).getBlob().setName(name);
// var blob = response.getBlob().setName(name);
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail(email, subject, body, {
htmlBody: body,
attachments:[response]
});
所以我替换了
var engine = ss.getRange("D15:E15").getValue().split("\n");
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
和
var input = ss.getRange("D15:E15").getValue();
var engine = input.replace(/(?:\r\n|\r|\n)/g, '_');
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue()+ "_" + engine + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
现在有效
我对脚本编写还很陌生,一直在边做边学(或者更准确地说,是找到慷慨的人为我做这些事),所以真的了解不多。如果代码错误、愚蠢或格式不正确,我们深表歉意。
我有这段代码应该以 PDF 格式导出 sheet 并根据特定单元格中的字符串命名导出。在您将多行单元格条目放入组合之前,这种方法效果很好。导致问题的代码如下,导致问题的位是 engine[0]
:
function Generate_Form() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName('JobRequestForm'));
var tpjlr = ss.getRange("H8:I8").getValue();
if (tpjlr.length > 0) {
var email = "x@jaguarlandrover.com"
var email1 = ss.getRange("H5:I5").getValue() + ("@jaguarlandrover.com");
var email2 = ss.getRange("H6:I6").getValue() + ("@jaguarlandrover.com");
}
var subject = "Job request from " +ss.getRangeByName("D5:E5").getValue()+ "_" +ss.getRangeByName("D13:E13").getValue()+ "_" +ss.getRangeByName("D14:E14").getValue()+ "_TPJLR_" +ss.getRangeByName("H8:I8").getValue()+ "_" +ss.getRangeByName("D7:E7").getValue();
var body = "Objective of the request:- " + ss.getRange("D18:I18").getValue();
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
+ '&size=letter' // paper size legal / letter / A4
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true&source=labnol' // fit to page width, false for actual size
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&gid='+ss.getSheetId(); // the sheet's Id
var token = ScriptApp.getOAuthToken();
var engine = ss.getRange("D15:E15").getValue().split("\n");
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
var response = UrlFetchApp.fetch(url + url_ext, {
headers: {
'Authorization': 'Bearer ' + token
}
}).getBlob().setName(name);
// var blob = response.getBlob().setName(name);
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail(email, subject, body, {
htmlBody: body,
attachments:[response]
});
所以我替换了
var engine = ss.getRange("D15:E15").getValue().split("\n");
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue() + "_" + engine[0] + "_" + engine[1] + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
和
var input = ss.getRange("D15:E15").getValue();
var engine = input.replace(/(?:\r\n|\r|\n)/g, '_');
var name = ss.getRange("D13:E13").getValue() + "_" + ss.getRange("D14:E14").getValue()+ "_" + engine + "_" + "TPJLR_" + ss.getRange("H8:I8").getValue() + "_" + ss.getRange("D7:E7").getValue() + ".pdf";
现在有效