2016-10-23 10 views
1

Google 스프레드 시트 용 애드온을 개발 중입니다. 그렇게하는 동안 나는 여기 Google Sheet Add On에서 시간 기반 트리거를 만들 수 있습니까?

Exception: The add-on attempted an action that is not permitted in Test as add-on mode. To use this action, you must deploy the add-on. 

예외

다음 발생 코드의 요점이되는 나는

function initiateCall() 
{ 
    try 
    { 
    var sp = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet_obj = sp.getSheetByName(SHEET_NAME); 
    var last_row = sheet_obj.getLastRow(); 
    var result = "failure"; 

    if(last_row >= 2) 
    { 
     Logger.log("Creating"); 
     var trigger_id = ScriptApp.newTrigger('triggerToInitiateCall').timeBased().after(100).create(); 
     Logger.log("Created"); 
     setProperty("trigger_id", trigger_id.getUniqueId()); 

     result = "success"; 
    }//if 
    else 
     result = "validation_failure"; 

    return result; 
    }//try 
    catch(e) 
    { 
    Logger.log("Exception=> "+e+" At Line Number "+e.lineNumber) 
    }//catch 
}//initiateCall 

참고 예외 얻고있다 : - 스크립트 AuthMode.NONE 모드 에서 실행 - 을 스크립트 독립 실행 형 스크립트입니다.

트리거를 사용하는 이유는 비동기적인 UrlFetch를 만드는 것입니다.

그래서 나는

  1. 는 구글 앱 스크립트에서 비동기 URL을 가져올 수 있도록 가능 물어 두 가지 질문이 있습니까?
  2. Google 시트에 시간 기반 트리거를 만드는 방법이 아니라면 (비동기 UrlFecth를 만들기위한 대체 방법)?

도와주세요. 어떤 도움을 주셔서 감사합니다.

답변

2

Google Apps Script는 동기식입니다. 애드온은 시간 기반 트리거를 사용할 수 있지만 한 시간에 한 번만 실행할 수 있습니다.

스크립트에서 6 분의 실행 시간이 있습니다. 가능한 경우 URLFetch가 반환되기를 기다립니다. 이것은 동기식이며 호출의 반환 값을 기다립니다.

비동기 호출이 정말로 필요한 경우 URLFetch가 반환 될 때까지 기다릴 수 없으며 한 시간에 한 번 실행되는 트리거를 사용하거나 사이드 바를 만들고 사이드 바의 컨텍스트에서 API 호출을 실행할 수 있습니다. 비동기 호출.

+0

알았어요. 아니면 jQuery 자체에서 AJAX 요청을 보낼 수 있습니다 (사이드 바에서) –

+0

왜 이런 생각을하지 않았는지 몰라요. –