我已经使用Google工作表创建了一个订单表单,其中包含一个脚本,可将订单的pdf通过电子邮件发送给供应商。我对其进行了测试,并且效果很好,因此将其保存到模板库中。
现在,当我从模板创建新的Google表格并运行脚本时,出现错误-TypeError:无法调用未定义的方法“ getSheetId”。
现在,如果我在刚创建的新电子表格上重复脚本并调用重复的代码,它将可以正常工作。奇怪的是,当我现在尝试调用原始代码时,它现在也可以正常工作。现在,当我删除刚创建的重复脚本时,甚至变得陌生,原始代码将再次停止工作。
我已经做过多次,并且得到了相同的结果。
有人有任何想法吗?我在这里做错了什么吗?
function emailOrder(){ // this is the function to call
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var shName = sh.getName()
var email = sh.getRange('I8').getValue();
var dates = sh.getRange('V8').getValue();
var reference = sh.getRange('V5').getValue();
var vendor = sh.getRange('B5').getValue();
var contact = sh.getRange('B8').getValue();
sendSpreadsheetToPdf(shName, email , vendor + ' - '+ dates + ' - ' + reference , "Hi " + contact + ", <br /> <br /> See attached order for reference: " + reference + ", <br /> <br /> Kind regards, <br />NAME<br /> PH NUMBER <br /> <br />");
};
function sendSpreadsheetToPdf(pdfName, email, subject, htmlbody) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = spreadsheet.getId();
var url_base = spreadsheet.getUrl().replace(/edit$/,'');
var sheetId = spreadsheet.getActiveSheet().getSheetId();
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ (('&gid=' + sheetId ))
// following parameters are optional...
+ '&size=A4' // paper size
+ '&portrait=true' // orientation, false for landscape
+ '&fitw=true' // fit to width, false for actual size
+ '&sheetnames=false&printtitle=false&pagenumbers=false' //hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&fzr=false' // do not repeat row headers (frozen rows) on each page
+ '&top_margin=0.4&bottom_margin=0.4&left_margin=0.4&right_margin=0.4'; // Margins: set all to 0.4
var options = {
headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),}
}
var response = UrlFetchApp.fetch(url_base + url_ext, options);
var blob = response.getBlob().setName(pdfName + '.pdf');
if (email) {
var mailOptions = {attachments:blob, htmlBody:htmlbody}
MailApp.sendEmail(
email,
subject,
"html content only",
mailOptions);
}
}
答案 0 :(得分:0)
独立脚本未绑定到特定文档,而是与文档分开打开和调用。因此,如果要在独立脚本中调用电子表格或表格,则需要打开电子表格by id或url和表格by name
绑定脚本绑定到特定文档广告,它们可以使用SpreadsheetApp.getActiveSpreadsheet()
和spreadsheet.getActiveSheet()
调用绑定的电子表格及其工作表。从技术上讲,绑定脚本与https://www.google.com/script/分开调用。但是,如果绑定的电子表格未打开或多次打开,则这样做可能导致错误。相反,应该通过Tools->Script Editor
从绑定文档的UI中打开绑定脚本。 Goog的做法是,在调用脚本之前,仅打开电子表格的一个版本,最近一次。否则,确定活动电子表格和工作表可能会导致错误。