使用onEdit()将工作表另存为pdf

使用onEdit()将工作表另存为pdf,pdf,google-apps-script,google-sheets,eventtrigger,Pdf,Google Apps Script,Google Sheets,Eventtrigger,我试图将谷歌电子表格保存为pdf格式,每次编辑电子表格中的特定单元格时,都将其发送给我自己。我有一个脚本,它可以将电子表格保存为pdf格式并通过电子邮件发送给用户,它可以正常工作,我还有一个onEdit(e)脚本,它可以完全满足我的需要。但当我把它们放在一起时,它就不起作用了。以下是脚本: 函数onEdit(e){ var sheet1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“预订”); var index=sheet1.ge

我试图将谷歌电子表格保存为pdf格式,每次编辑电子表格中的特定单元格时,都将其发送给我自己。我有一个脚本,它可以将电子表格保存为pdf格式并通过电子邮件发送给用户,它可以正常工作,我还有一个onEdit(e)脚本,它可以完全满足我的需要。但当我把它们放在一起时,它就不起作用了。以下是脚本:

函数onEdit(e){
var sheet1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“预订”);
var index=sheet1.getRange('O5').getValue();
如果(索引=='#N/A')返回;
var电子邮件=”myemail@gmail.com";
var subject=“subject”;
var sheet3=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“发票工程”);
var pdfname=(“PDF.PDF”);
var message=(“你好!”);
//因为我不能只导出一张工作表,所以我创建了一个新的电子表格,复制工作表
//进入新的电子表格,并将新的电子表格另存为pdf
var newSpreadsheet=SpreadsheetApp.create(“要导出的电子表格”);
第三张复印件(新闻稿);
//我从新的电子表格中删除默认的Sheet1
var ss=newSpreadsheet.getSheetByName('Sheet1');
ss.activate();
newSpreadsheet.deleteActiveSheet();
//创建pdf---这就是脚本不知何故停止的地方!
var pdf=DriveApp.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
var attach={fileName:pdfname,content:pdf,mimeType:'application/pdf'};
//寄信
sendmail(电子邮件、主题、消息,{附件:[附加]});
//删除新创建的电子表格
DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true);

}
您应该使用可安装的onEdit触发器,因为发送电子邮件不能使用简单的触发器

ScriptApp.newTrigger("onEdit")
   .forSpreadsheet(SpreadsheetApp.getActive())
   .onEdit()
   .create();
我相信activate是一种用于工作表而不是电子表格的方法。您可以从SpreadsheetApp打开电子表格

//Create pdf --- THIS IS WHERE THE SCRIPT SOMEHOW STOPS!
  var pdf = DriveApp.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
  var attach = {fileName:pdfname,content:pdf, mimeType:'application/pdf'};
我相信您需要在这两个语句之间使用DriveApp创建pdf文件。可能与DriveApp.createFile一起使用

//Create pdf --- THIS IS WHERE THE SCRIPT SOMEHOW STOPS!
  var pdf = DriveApp.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
  var attach = {fileName:pdfname,content:pdf, mimeType:'application/pdf'};