2012-05-24 3 views
1

은 내가 트리거가 생성 된 스크립트 편집기하지만, 스프레드 시트에있는 모든 편집에 "오류"메시지에서은 onEdit 실행하려고하면 프로그래밍은 onEdit 기능onEdit 프로그래밍 방식으로 트리거를 만들 수 있습니까?

function onEdit() { 
    test(); 
} 

function test() { 
    triggerLater(); 
} 

function customMsgBox() { 
    Browser.msgBox("hello world"); 
} 

function triggerLater() { 
    var date = new Date(); 
    date.setMinutes(date.getMinutes() + 1); 
    try { 
    var oneTimeOnly = ScriptApp.newTrigger("customMsgBox") 
     .timeBased() 
     .at(date) 
     .create(); 
    return oneTimeOnly.getUniqueId(); 
    } 
    catch (e) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    ss.toast("error"); 
    } 
} 

에서 스크립트를 만들려고 간단한 스크립트를 작성 in a 건배

누군가 나를 이해하도록 도와 줄 수 있습니까?

+1

FYI 변수 "e"의 값을 토스트했다면 정확한 오류 메시지를 볼 수 있습니다. –

답변

3

간단한 이벤트 처리기 기능에는 사용 권한이 제한되어 있습니다 (즉, 이메일을 보내거나 캘린더를 열 수 없음). 사용자 권한없이 실행되기 때문입니다. 따라서 트리거를 설정할 수 없습니다 (제한이 없으며 엄청난 보안 버그 일 수 있습니다).

트리거가 계정에서 생성되어야한다고 생각되면 편집 가능한 트리거에 설치 가능을 사용하십시오. 먼저 onEdit 함수의 이름을 다른 것으로 바꾸십시오 (간단한 이벤트 핸들러로 트리거되지 않도록). 그런 다음 리소스 메뉴로 이동하여 스프레드 시트 편집 이벤트에서 실행할 함수를 선택하십시오. 자세한 내용은 docs을 참조하십시오.

+0

나는 허점을 찾았 으면 좋겠다 : D – Edo

+0

나는 문서를 읽으려고하지만 프로그래밍 방식으로 트리거를 만드는 데있어 제한점과 관련이있다. 필자는 그것을 놓치거나 문서가 부족한가요? – Edo

+1

트리거 생성에 대한 정보는 구체적으로 없습니다. 그러나 간단한 이벤트 핸들러에 관한 세 번째 글 머리표는 사용자 인증을 요구하는 것은 아무것도 할 수 없다는 것을 말합니다. 제한된 코드에서 권한있는 코드를 트리거 할 수 없어야한다는 것이 분명합니다. 이것은 엄청난 보안 문제 일 것입니다. –

관련 문제