2012-08-08 74 views
2

我有一個谷歌應用程序腳本,它將使用導入範圍函數將帶入google電子表格中的信息與谷歌表單中提交的信息進行比較。如果我手動運行腳本,該腳本完美工作,但如果它從表單提交觸發器運行,它會報告它沒有從使用導入範圍的單元格獲取正確的信息。有沒有辦法解決這個問題,就像有一個快速的功能,我可以添加強制導入範圍來更新?我已經嘗試添加長達10分鐘的等待時間,但沒有改變結果。觸發函數和導入範圍

感謝

回答

7

的問題是與像importRange是如何工作的功能。實際上,它們需要與使用它們登錄的用戶帳戶相同的訪問權限,以避免安全漏洞(想象一下您擁有的電子表格編輯器訪問您尚未與其共享的其他電子表格的編輯器)。

正因爲如此(至少這是我認爲的),所以只有在打開電子表格時纔會評估這些公式。關閉它並讓腳本在觸發器上運行時,它不會在預期的單元上找到任何結果。

一個簡單的解決方法是使用腳本本身獲取數據並退出使用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 2012-08-08 19:00:33

+2

只是一個提示,因爲你是StackOverflow的新手,所以當你覺得自己有一個好的答案時,你應該將答案標記爲已接受。投票(上下)也是我們這裏的另一個很好的功能。這不是郵件列表;) – 2012-08-08 19:22:28

+0

完成,並再次感謝 – user1583290 2012-08-08 23:07:08