Google 드라이브 스프레드 시트 스크립트를 작성하여 내 드라이브에서 pdf 파일을 받아 많은 사람들에게 첨부 파일로 전송하여 고유 한 파일을 전자 메일로 보낼 예정입니다. 데이터는 스프레드 시트에 있습니다. 첫 번째 열에는 수신자의 전자 메일 주소가 있고 두 번째 열에는 첨부해야하는 pdf 파일 이름이 있고 세 번째 열에는 사람의 이름이 있습니다.serialization을 계속하면 예기치 않은 예외가 발생했습니다.
function sendPDFs() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getDataRange().getLastRow() -1; // Number of rows to process
// Fetch the range of cells A2:C3
var nummails = 0
var numdrive = 0
var checkCol = 4
var dataRange = sheet.getRange(startRow, 1, numRows, 3)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var subject = "Some subject";
var body = 'Dear ' + row[2] + '\n\nPlease find your ' + subject + ' \n\nThank you \n\n XYZ'
var attachment = row[1]; // Second column.
var files = DriveApp.getFilesByName(attachment); // Get all files with name.
var blobs = []; // Array for attachment.
// Move files into blobs
while (files.hasNext()) {
var file = files.next();
blobs.push(file.getAs("application/PDF"));
}
// dont sent to invalid email ids or those without email ids
if (emailAddress == "" || emailAddress.indexOf("@") <= -1){
sheet.getRange(i+2, checkCol+1).setValue('Not Emailed')
numdrive = numdrive+1
}
else{
Utilities.sleep(1000)
MailApp.sendEmail(emailAddress, subject, body, {attachments: blobs, name: "XYZ" })
sheet.getRange(i+2, checkCol+1).setValue('Emailed')
nummails = nummails +1
}
}
Browser.msgBox(nummails+ " Mails sent successfully.")
}
직렬화 계속시 예기치 않은 예외가 발생합니다. 그러나 이메일이 전송됩니다. 코드가 작동하는 것처럼 보이지만 왜 오류인지 알 수 없습니다. 같은 오류가있는 기존 스레드를 보았지만 도움이되지 않습니다.
해결 방법에 대한 도움을 제공해주십시오.
위의 내용을 for 루프로 바 꾸었습니다. 여전히 같은 오류가 발생합니다. – user1327454
hmmm ... 다른 오류가 발생합니다 : "죄송합니다. 현재 사용할 수있는 서버가 없습니다. 잠시 기다렸다가 다시 시도하십시오."PDF에서 뭔가를 얻으려고 할 때 ... –
안녕하세요, 새 스프레드 시트 형식을 사용하고 있습니까? ? : 그렇다면 https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579 페이지를 참조하십시오. 문제는 적어도 설명되어 있습니다. –