2016-05-30 281 views
7

我正在嘗試使用Google Sheet API向單元格寫入值。 閱讀我從Java Quickstart使用指導,對我來說工作得很好。通過API使用Java寫入Google表格

用於寫入谷歌表我用:同時運行

service.spreadsheets().values().update(spreadsheetId, "Sheet1!A4:H", response).execute(); 

此函數輸出以下錯誤:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Request had insufficient authentication scopes.", 
    "reason" : "forbidden" 
    } ], 
    "message" : "Request had insufficient authentication scopes.", 
    "status" : "PERMISSION_DENIED" 
} 

其認證範圍,我使用

private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS); 
+0

你檢查你的['客戶secret.json'(https://developers.google.com/sheets/guides/authorizing#安裝的應用程序)文件?或者在授權Spreadsheet請求時使用適當的[範圍](https://developers.google.com/sheets/guides/authorizing#OAuth2Authorizing)。我希望這有幫助。 –

+0

嘗試在構建認證流程時使用approval_prompt = false。 – hoozecn

+0

@Rebot先生我重新創建了client-secret.json,但沒有任何改變。關於範圍 - 我是否按照原始信息中所述使用了正確的範圍? –

回答

9

顯然有幾個共同的問題:

  1. 刪除儲存在/Users/XXX/.credentials憑據。
  2. 將範圍更改爲SheetsScopes.SPREADSHEETS。
  3. Google Sheet共享和編輯選項在工作表本身。

現在,它的工作原理! 謝謝你們的幫助

+0

先生,你在這裏拯救了生命。 –

+0

刪除信用和更改範圍爲我工作。謝謝亞歷克斯:) – Rameshwar

0

的必須以交互方式使用Java API,如果您在無法彈出網絡眉毛的服務器上運行此API呃(這會讓你批准一個OAuth對話框),那麼認證流程沒有得到正確的憑證,並且不起作用。

運行此操作時,您是否看到瀏覽器彈出以批准OAuth對話框?如果沒有,您可能會在無頭會話中運行,並需要一些其他方法來獲取用戶的憑據。

1

我遇到了同樣的問題。我解決了範圍內的問題。 我只是改變

SheetsScopes.SPREADSHEETS.READONLY 

SheetsScopes.SPREADSHEETS 

而且它工作得很好。

0

嘗試更換:用A4 「工作表Sheet1 A4^h!」:H

相關問題