Я реализовал скрипт Google, чтобы изолировать конкретный лист в электронной таблице, а затем преобразовать лист в формат PDF и отправить его по электронной почте. Код извлекает адрес электронной почты для отправки электронного письма из самого листа.
Общее количество листов в электронной таблице равно 9. Код работает до листа 6/7 (он несовместим с местом возникновения первой ошибки).
Первые пять или около того электронных писем работают так, как задумано, с правильным листом, который отправляется по электронной почте в виде PDF-файла, который является полностью функциональным.
Электронные письма отправляются на все адреса, но прикрепленные файлы PDF не открываются и содержат ошибку «Упс! Возникла проблема с предварительным просмотром этого документа» после листа 6/7.
var d = new Date();
var month = new Array();
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";
var n = d.getMonth() +1;
var Year = d.getYear();
if (n == 12) { n = 0; Year += +1;}
var m = month[n];
var subject = m + " " + Year;
var body = 'body text.'
var Clients_No = 9;
function sendEmailWithPdfAttach() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheets = source.getSheets();
var SpreadsheetName = source.getName();
SpreadsheetApp.flush();
for (var no_sent = 0; no_sent < Clients_No; no_sent++){
var sheetNum = no_sent;//no_sent;
var SheetName = sheets[sheetNum].getName();
var SheetID = sheets[sheetNum].getSheetId();
var Sheet = source.getSheetByName(SheetName);
var range = Sheet.getRange(1, 9); //change to 7, 2
var email = range.getValue();
var range_account_open = Sheet.getRange(14, 2);
var Account_open = range_account_open.getValue();
if (Account_open !== "Account Closed") {
var url = ss.getUrl();
url = url.replace(/edit$/,'');
url = url + 'export?exportFormat=pdf&format=pdf' +
'&size=A4' + //paper size
'&portrait=true' +
'&fitw=true' +
'&gridlines=false' +
'&fzr=false';
var request = {
"method": "GET",
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
"muteHttpExceptions": true
};
var url = Drive.Files.get(ssID)
.exportLinks['application/pdf'] + "&gid="+SheetID;
var blob = UrlFetchApp.fetch(url , request).getBlob();
blob.setName(sheets[sheetNum].getName() + ".pdf");
MailApp.sendEmail(email, subject, body, {attachments:blob});
//Utilities.sleep(1000);
}
}
};
Что я должен изменить, чтобы все отправленные электронные письма имели открытые и функциональные PDF-файлы?