2013-10-03 6 views
0

GAS가 필요한 순서대로 기능을 실행하는 데 문제가 있습니다. 이 코드에서 :Google Apps Script 실행 주문

function documentUpload(e) { 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('documentValue').setText('Uploaded'); 
    app.getElementById('documentValueLabel').setStyleAttribute('color', 'black'); 
    checkSubmit(e); 
    return app; 
} 

... 항상 텍스트를 변경하기 전에 checkSubmit을 실행합니다. checkSubmit 검사는 documentValue에 텍스트가 있는지 여부 중 하나이기 때문에 쓸모가 없습니다.

나는 this post을보고과 같이 LockService을 추가하는 시도 :

function documentUpload(e) { 
    var app = UiApp.getActiveApplication(); 
    app.getElementById('documentValue').setText('Uploaded'); 
    app.getElementById('documentValueLabel').setStyleAttribute('color', 'black'); 
    var lock = LockService.getPrivateLock(); 
    lock.waitLock(10000); 
    checkSubmit(e); 
    lock.releaseLock(); 
    return app; 
} 

을 ...하지만 나는 어떤 다른 결과를받지 못했습니다. Utilities.sleep()도 마찬가지입니다.

미리 제안 해 주셔서 감사합니다.

답변

0

앱을 반환하면 UI가 업데이트됩니다. 즉, 함수 내부의 함수 호출은 동일한 함수 내에서 UI 변경 사항을 볼 수 없습니다.

다르게 생각해야합니다. 즉, 콘텐츠를 읽는 함수를 호출하기 전에 앱을 반환 할 수 있도록 (즉, UI를 업데이트 할 수 있도록) 코드를 2 개의 함수로 분할해야합니다.


편집 : 나는 당신의 코드를 볼 때 당신이 다운로드를 시작하기 전에하고 싶은 유일한 텍스트 값과 스타일 속성을 ... 그래서 당신이 사용할 수있는 경우 변경하는 것 같다 즉시 실행될 clientHandler (see this other recent post) 아마도 이것이 문제를 해결할 수 있습니다.