0

Google에서 계산을 마치 자마자 명령을 실행할 수있는 스크립트를 작성하려고합니다 (예 : 일부 VBA를 모방 한 Google 문서에 스크립트를 추가하려고합니다. "계산" 기능성).Google 문서 도구 맞춤 새로 고침 스크립트

스크립트는 범위를 문자열로 변환하고 해당 문자열에서 "Loading ..."(또는 "#VALUE!"또는 "# N/A") 하위 문자열을 찾는 것으로 생각합니다. "while"루프는 원하지 않는 부분 문자열이 문자열에서 더 이상 발견되지 않을 때까지 잠자기 상태에 있습니다.

"...로드"나는 샌드 박스로 다음과 같은 스프레드 시트를 사용하고, 그리고 코드는 단지 검색 샌드 박스에서 괜찮 작동하는 것 같다 : 다른 상황에서

https://docs.google.com/spreadsheet/ccc?key=0AkK50_KKCI_pdHJvQXdnTmpiOWM4Rk5PV2k5OUNudVE#gid=0

그러나, 값이 "# VALUE"로 반환되는 셀이 있습니다. 또는 "# N/A"(Google이 아직로드/사고/계산 중임) 이외의 이유로 이 주변의 방법은 무엇입니까?

function onEdit() { 

Refresh(); 

}; 

function Refresh() { 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); 
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); 

    // set the range wherever you want to make sure loading is done  

    var range = sheet.getRange('A:A') 
    var values = range.getValues(); 

    var string = values.toString(); 

    var loading = "Loading"; 

       do 
        { 
        var randomWait = Math.floor(Math.random()*100+50); 
        Utilities.sleep(randomWait); 
       } 
       while (string.search(loading) ==! null); 

     range.copyTo(sheet2.getRange('A1'), {contentsOnly:true}); 

customMsgBox(); 

}; 

function customMsgBox() { 
    Browser.msgBox("Data refreshed."); 
}; 
+0

가 확인하려면 - 당신은 몇 가지를 실행 찾고 있습니다 모든 계산이 끝나면 코드? 그게 당신이 찾고있는 사건입니까? –

+0

@ArunNagarajan : 예. 그게 내가 원하는거야. – zenhuman

+0

@Henrique : 시간을내어 주셔서 감사합니다. 당신의 조언을 염두에 두겠습니다. – zenhuman

답변

0

오히려 "절전"당신이 다음 업데이트/새로 고침 이벤트를 캡처하고 문서에 이벤트 처리기를 추가해야하는 while 루프를 사용하는 것보다 당신이 필요로하는 어떤 수학/처리를 실행합니다. 여기

이 이벤트에 대한 읽기 시작하기에 좋은 장소 : https://developers.google.com/apps-script/understanding_events

을하지만 당신은 당신이 빠른 일부 예제 코드를 얻을 수있는 이벤트 핸들러에 대한 API 문서를 ... 검색하면