2012-05-11 3 views
2

안녕하세요.Google 스프레드 시트 시간 기반 이벤트가 실행되지 않습니다.

나는 스프레드 시트에서 견적을 가져 와서 전자 메일을 통해 사용자에게 보내는 작은 스크립트를 작성했습니다. 아이디어는 스크립트가 하루에 한 번 실행되어 스프레드 시트의 다음 인용문을 가져 와서 이메일 주소로 보냅니다.

스크립트는 다음과 같습니다 : I 수동으로 실행할 때

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 1000; // Number of rows to process 
    var dataRange = sheet.getRange(startRow, 2, numRows, 3); 
    var data = dataRange.getValues(); 
    for (i in data) { 
    var row = data[i]; 
    if(row[2]=="yes") { 
     continue; 
    } 
    var emailAddress = "[email protected]";  // email to send to 
    var message = '"'+row[0]+'"'+"\n\n"+"- "+row[1];  // Second column 
    startRow = parseInt(startRow)+parseInt(i); 
    var subject = ""; 
    MailApp.sendEmail(emailAddress, subject, message); 
    sheet.getRange(startRow,4).setValue("yes"); 
    SpreadsheetApp.flush(); 
    break; 
    } 
} 

스크립트는 잘 작동합니다.

는 지금은 다음과 같습니다 스크립트 트리거 추가 :

sendEmails을 | 시간 주도 | 주간 타이머 | 오후 7시 ~ 8시

불행히도이 기능은 실행되지 않으며 견적을 전송하지 않습니다.

시간 구동 트리거를 이해하는 데 약간의 문제가 있습니다. "7pm에서 8pm"은 무엇을 의미합니까? 그 두 시간 사이에 임의의 시간에 한 번?

Google 문서 도구에 로그인하지 않아도 스크립트는 의미가 있습니다. 어쩌면 여기서 완전히 오해 할 수 있습니다 ... Google 문서 도구에 로그인 한 상태에서만 스크립트가 작동합니까? (하지만 지금 현재로서는 스크립트가 Time-Driven 트리거와 함께 실행되지 않습니다.)

대단히 감사합니다. Moritz

답변

2

타이머/이벤트에서 스크립트를 실행하면 "ActiveSpreadsheet"가 없습니다. .getActiveSpreadsheet()를 사용하는 대신 .openById()를 사용하십시오.

스크립트 트리거가 성공적으로 실행 되려면 Google 문서 도구에있을 필요가 없습니다.

또한 (특히 디버깅 할 때) 스크립트 실패에 대한 즉각적인 알림을 사용하는 데 도움이됩니다. 타이머를 설정 한 곳에서 알림 링크를 클릭하여 설정하십시오. 또한

+0

대단히 감사합니다. 사실 그것은 .getActiveSpredsheet()와 작동하며 타이머도 작동합니다. 시간대 차이로 인해 한 시간 정도 걸립니다. – user1389974

0

내가 또한 시간 기반 트리거를 이해하는 문제의 비트 mzimmerman

에서 응답합니다. "7pm - 8pm"의 의미는 무엇입니까? 즉, 귀하의 스크립트는 오후 7 시부 터 오후 8 시까 지의 시간에 실행되지만 내 관찰에 따르면 오후 7시 이후에 실행됩니다.

+0

도움 주셔서 감사합니다. – user1389974