2014-02-07 3 views
0

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.") 
} 

직렬화 계속시 예기치 않은 예외가 발생합니다. 그러나 이메일이 전송됩니다. 코드가 작동하는 것처럼 보이지만 왜 오류인지 알 수 없습니다. 같은 오류가있는 기존 스레드를 보았지만 도움이되지 않습니다.

해결 방법에 대한 도움을 제공해주십시오.

답변

0

메인 루프가 예상 한대로 작동하지 않는 것 같습니다. 루프의 값이 잘못되었습니다. 다음과 같이 루프 정의를 변경했습니다.

for (var i=0 ; i<data.length ; ++i) { 

어떤 일이 발생하는지 알려주십시오.

+0

위의 내용을 for 루프로 바 꾸었습니다. 여전히 같은 오류가 발생합니다. – user1327454

+0

hmmm ... 다른 오류가 발생합니다 : "죄송합니다. 현재 사용할 수있는 서버가 없습니다. 잠시 기다렸다가 다시 시도하십시오."PDF에서 뭔가를 얻으려고 할 때 ... –

+0

안녕하세요, 새 스프레드 시트 형식을 사용하고 있습니까? ? : 그렇다면 https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579 페이지를 참조하십시오. 문제는 적어도 설명되어 있습니다. –

0

먼저 스크립트 편집기 메뉴에서 '실행 기록'을 확인하십시오. 거기에 오류의 원인을 찾을 수 있습니다.

스크립트를 실행할 때마다, Google 애플리케이션 스크립트는 스크립트가 실행되는 동안 만들어 Google 애플리케이션 스크립트 서비스를 호출 할 때마다의 기록입니다 실행 성적을 기록합니다. 이 스크립트는 스크립트가 수행 한 작업을 이해하는 데 도움이 될 수 있습니다. 실행 기록을 보려면 스크립트 실행이 완료된 후 보기> 실행 기록을 메뉴 모음에 클릭하십시오.

Google Apps 스크립트 한도 (할당량)에 도달하면 일반적으로 이러한 오류 (예외)가 발생합니다. 여기에 할당량을 참조하십시오 : https://docs.google.com/macros/dashboard (탭 할당량으로 전환).

관련 문제