2012-08-08 1 views
2

Google 양식에 제출 된 정보를 importrange 기능을 사용하여 Google 스프레드 시트로 가져온 정보와 비교하는 Google Apps 스크립트가 있습니다. 스크립트는 수동으로 실행하면 완벽하게 작동하지만 양식 제출 트리거에서 실행되면 importrange를 사용하여 셀에서 올바른 정보를 얻지 못한다고보고합니다. 이 문제를 해결할 수있는 방법이 있습니까? 예를 들어 가져 오기 범위를 강제로 업데이트 할 수있는 빠른 기능이 있습니까? 이미 최대 10 분의 대기 시간을 추가하려고 시도했지만 결과가 변경되지 않았습니다.트리거 된 함수 및 가져 오기

감사

답변

7

문제는 importRange 작품 같은 방법 기능입니다. 실제로, 보안 구멍 (공유하지 않은 다른 스프레드 시트에 액세스하고있는 스프레드 시트의 편집기를 상상해보십시오)을 피하기 위해 사용자 ID를 사용하여 로그인 한 사용자 계정과 동일한 액세스/권한이 필요합니다.

이 때문에 (내가 생각하는 것 이상으로)이 수식은 스프레드 시트를 열었을 때만 평가됩니다. 스크립트를 닫고 스크립트가 트리거에서 실행되도록두면 예상되는 셀에서 결과를 찾지 못합니다.

이 간단한 해결 방법은 스크립트 자체를 사용하여 데이터를 가져오고 importRange을 사용하여 종료하는 것입니다. 매우 쉽게 할 수 있습니다.

var values = SpreadsheetApp.openById('external-spreadsheet-key'). 
    getSheetByName('Sheet1').getRange('A1:D100').getValues(); 
SpreadsheetApp.getActive().getSheetByName('DestSheet'). 
    getRange(1,1,values.length,values[0].length).setValues(values); 

분명히 스프레드 시트 키, 시트의 이름과 범위는 여기의 예일뿐입니다.

+0

그래, 나는 두려웠다. 정보 주셔서 감사합니다. – user1583290

+2

StackOverflow를 처음 접했을 때 팁이 있으면 좋은 것으로 생각되면 받아 들일 수있는 답으로 표시해야합니다. 투표 (위 아래로)는 또 다른 좋은 기능입니다. 이것은 메일 링리스트가 아닙니다.) –

+0

완료하고 다시 한 번 감사드립니다. – user1583290

관련 문제