2016-11-20 103 views
0

我在我的Aurelia應用程序(我正在使用TypeScript)中玩弄Google Sheets API的新版本。我已經成功地登錄用戶,並要求所要求的範圍,但是當我試圖得到一個電子表格中的API引發以下錯誤的值:表JavaScript API未捕獲錯誤

cb=gapi.loaded_0:269 Uncaught Error: arrayForEach was called with a non array value(…)

這是我的初始化API和登錄用戶:

gapi.load("auth2",() => { 
    gapi.auth2.init({ 
     'client_id': this.clientId, 
     'scope': this.scopes.join(' ') 
    }).then(() => { 
      this.auth = gapi.auth2.getAuthInstance(); 
      this.auth.signIn().then(response => { 
       gapi.load("client",() => { 
        gapi.client.load("sheets", "v4",() => { 
         gapi.client.sheets.spreadsheets.values.get({ 
          spreadsheetId: this.testSheet, 
          range: 'Class Data!A2:E' 
          }).then((response) => {console.log(response);}); 
        }); 
       }); 
      }) 
    }); 
}); 

scopes變量的作用域的數組:

scopes: string[] = ["https://www.googleapis.com/auth/spreadsheets.readonly", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/drive"] 

在用戶登錄成功,我甚至可以得到他們的名字和電子郵件。加載Sheets API後,我已經檢查過`gapi.client'和'sheets'對象,但是當我嘗試從電子表格中獲取數據時,它會失敗,並顯示上述錯誤。我正在運行的示例違反了Google公開的電子表格,該示例在this示例中使用。另外請注意,我的客戶端ID沒有任何問題,因爲我已經運行Google的示例代碼,並且工作正常。

回答

1

是您的表名爲級數據,如果是的話,可能需要如下指定範圍:

range: "'Class Data'!A2:E" 

這是表的用戶界面和應用程序腳本內肯定是真的,而且我m試圖記住我是否與JS客戶端庫一樣。

+0

試過了..它沒有工作。我直接從谷歌的例子中複製了'range'的值,但它似乎仍然沒有工作... – dimlucas

+0

是的,我現在已經嘗試過這個示例,並且示例確實可以正常工作,所以這不是問題...關於你的範圍的兩個問題:你要求驅動器和表單的只讀和完全訪問,你只需要請求一個或其他(只讀或不是),這取決於你是否想授予寫訪問權限?其次,是否啓用了Drive API? – Bardy

+0

Drive API未啓用,只有Sheets API。我現在啓用它,但錯誤仍然存​​在。我試着用readonly scope來運行代碼。我包含了所有可用的範圍,以確保錯誤與他們無關 – dimlucas