我已经寻找并尝试了许多解决方案,但由于某些原因,我无法使其工作。
我的目标是:
我怎样才能改变代码,使其包含2个pdf文件?它可以是两个选项之一: 1.按名称抓取pdf grom google驱动器文件夹,在那里我得到了一个工作函数,可以将2个或更多的表导出为pdf -使用相同的名称(并删除旧版本)。2.将2张或更多张图纸转换为相应的PDF文件,并将其作为附件添加。
我是个新手,所以还在努力摸索。
尝试组合这里找到的几个解决方案,但我要么一直收到‘文件迭代’错误。
当使用GetFilesByName的变体时,如果(file.HasNext(),getAs(‘应用程序/PDF’)),我没有得到错误,但也没有邮件发送。
function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getRange(1,5).getValue(); // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, 15, 3); // this function is: Row, Column, Number of Rows, Number of Columns
// Fetch values for each row in the Range.
var data = dataRange.getValues();
// var bijlage1 = DriveApp.getFilesByName('EDC-A.pdf'); // definiëring van file 2
// var bijlage2 = DriveApp.getFilesByName('EDC-B.pdf'); // definiëring van file 1
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var body = '';
var html = HtmlService.createTemplateFromFile('body').evaluate().getContent(); // legt link met Body html file
var options = {
htmlBody: html
};
var aantaluzk = row[2]; // Third column
if (aantaluzk != 0) { // Variable
var subject = 'Uitzendkrachten te evalueren';
MailApp.sendEmail(emailAddress,subject,body,options);
SpreadsheetApp.flush(); // geen idee wat dit doet?
}
}
}
编辑:根据请求,包含导出脚本的代码(在不同的脚本文件中)µ基于注释,到目前为止,我已经设法让它工作了:-将pdf导出脚本与Sendmail函数相结合,并将它们定义为变量。我不完全理解它是如何与blob一起工作的,但它确实如此。-对每个板材重复导出脚本,更改所需的参数。
得到了一个可以工作的脚本,但很可能会变得更简单?
最终结果
// Test en goedgekeurd 19/6
function MailExport() {
var sheetName = "EDCA";
var folderID = "1gNoRIktbqYjIzE8txUezW5wt_jliIWYJ"; // Folder id to save in a folder.
var pdfName = "EDC-A"; // "+Date()" toevoegen zonder "" indien timestamp aan file toegevoegd;
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var folder = DriveApp.getFolderById(folderID);
// Vernietig de vorige versie
DriveApp.getFilesByName('EDC-A').next().setTrashed(true);
//Copy whole spreadsheet
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("tmp_convert_to_pdf", folder))
//delete redundant sheets
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){
destSpreadsheet.deleteSheet(sheets[i]);
}
}
var destSheet = destSpreadsheet.getSheets()[0];
//repace cell values with text (to avoid broken references)
var sourceRange = sourceSheet.getRange(1,1,sourceSheet.getMaxRows(),sourceSheet.getMaxColumns());
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
//save to pdf
var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.createFile(theBlob);
//Delete the temporary sheet
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
// Afdeling 2
var sheetName = "EDCB";
var folderID = "1gNoRIktbqYjIzE8txUezW5wt_jliIWYJ"; // Folder id to save in a folder.
var pdfName = "EDC-B"; // "+Date()" toevoegen zonder "" indien timestamp aan file toegevoegd;
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var folder = DriveApp.getFolderById(folderID);
// Vernietig de vorige versie
DriveApp.getFilesByName('EDC-B').next().setTrashed(true);
//Copy whole spreadsheet
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("tmp_convert_to_pdf", folder))
//delete redundant sheets
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){
destSpreadsheet.deleteSheet(sheets[i]);
}
}
var destSheet = destSpreadsheet.getSheets()[0];
//repace cell values with text (to avoid broken references)
var sourceRange = sourceSheet.getRange(1,1,sourceSheet.getMaxRows(),sourceSheet.getMaxColumns());
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
//save to pdf
var theBlob2 = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile2 = folder.createFile(theBlob2);
//Delete the temporary sheet
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
// Onderdeel voor mail
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getRange(1,5).getValue(); // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, 15, 3); // this function is: Row, Column, Number of Rows, Number of Columns
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var body = '';
var html = HtmlService.createTemplateFromFile('body').evaluate().getContent(); // legt link met Body html file
var options = {
attachments: [theBlob,theBlob2],
htmlBody: html
};
var aantaluzk = row[2]; // Third column
if (aantaluzk != 0) { // Variable
var subject = 'Uitzendkrachten te evalueren';
MailApp.sendEmail(emailAddress,subject,body,options);
SpreadsheetApp.flush(); // geen idee wat dit doet?
}
}
}
https://stackoverflow.com/questions/56668052
复制相似问题