此脚本针对包含3个样本行的样本表运行。它在第一个循环中正确运行。然后,在第二个循环中,它抛出
无法在对象中找到函数getrange
在这一行
value1.copyTo(pdf.getRange("B"+8+":B"+8), {contentsOnly:true});
代码:
function MassEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//var range = ss.getActiveRange();
var inputs = ss.getSheets()[0];
var temp = ss.getSheets()[1];
var team = ss.getSheets()[2];
var fees = ss.getSheets()[3];
var display = ss.getSheets()[4];
var pdf = ss.getSheets()[5];
//CHANGE temp to inputs IF YOU NEED TO SEND EMAIL CONTRACT TO ALL CONTACTS
var row = inputs.getLastRow();
var dataRange = inputs.getRange(2, 2, row, 5); // Fetch values for each row in the Range
var data = dataRange.getValues();
for (i=0; i < data.length; i++) {
var school = data[i];
if (school[1] != "" && school[2] != "OK") {
// Browser.msgBox(data[i]);
var process1 = temp.getRange(2,1,1,5)
process1.setValues([school]);
var process2 = temp.getRange("A"+2+":D"+4);
process2.copyTo(temp.getRange("A"+2+":D"+4), {contentsOnly:true});
var value1 = display.getRange("B"+8+":B"+8);
value1.copyTo(pdf.getRange("B"+8+":B"+8), {contentsOnly:true});
var value2 = display.getRange("B"+9+":B"+9);
value2.copyTo(pdf.getRange("B"+9+":B"+9), {contentsOnly:true});
var value3 = display.getRange("B"+22);
value3.copyTo(pdf.getRange("B"+22), {contentsOnly:true});
var value4 = display.getRange("B"+24);
value4.copyTo(pdf.getRange("B"+24), {contentsOnly:true});
var value5 = display.getRange("B"+31);
value5.copyTo(pdf.getRange("B"+31), {contentsOnly:true});
//var range = pdf.getRange("B"+31);
//range.setValue(Utilities.formatDate(new Date(), "GMT-5", "MM-dd-yyyy HH:mm"));
var value6 = display.getRange("B"+34);
value6.copyTo(pdf.getRange("B"+34), {contentsOnly:true});
// Create a new Spreadsheet and copy the current sheet into it.
var newSpreadsheet = SpreadsheetApp.create(" snapshot");
sheet = pdf;
pdf.copyTo(newSpreadsheet);
// Find and delete the default "Sheet 1", after the copy to avoid triggering an apocalypse
newSpreadsheet.getSheetByName('Sheet1').activate();
newSpreadsheet.deleteActiveSheet();
// Make PDF
var pdf = DriveApp.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes();
var attach = {fileName:'2016 file.pdf', content:pdf, mimeType:'application/pdf'};
var emailSubject = "subject"
var emailYourName = "person
var emailReply = "email@cox.net"
var emailMsg = ""
SpreadsheetApp.flush();
MailApp.sendEmail(school[1], emailSubject, emailMsg,{htmlbody: emailMsg, name: emailYourName, replyTo: emailReply, bcc:"person@gmail.com", attachments:[attach]});
// Delete the wasted sheet we created, so our Drive stays tidy.
DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true);
inputs.getRange(i+2,6).setValue("OK");
//temp.getRange(i+2,5).setValue("OK");
// clear row 2 in temp sheet
temp.getRange(2, 1, 2, 5).clear({contentsOnly:true});
SpreadsheetApp.flush();
}}}
答案 0 :(得分:0)
代码为两种不同的数据类型声明变量pdf
两次。
var pdf = ss.getSheets()[5];
并且
// Make PDF
var pdf = DriveApp.getFileById(newSpreadsheet.getId())
.getAs('application/pdf').getBytes();
重命名其中一个。也许将pdf
更改为pdf_File
:
var pdf_File = DriveApp.getFileById(newSpreadsheet.getId())
.getAs('application/pdf').getBytes();