簡體   English   中英

從 Google Apps 腳本 (GAS) 到 Sheets API 的 OAuth 2.0

[英]OAuth 2.0 from Google Apps Script (GAS) to Sheets API

根據Google 的文檔,我實現了以下代碼以將一行附加到 Google 表格(並且我是此表格的所有者)。

function addSalaryLog(updateArray) {
  const resource = {
    "majorDimension": "ROWS",
    "values": [updateArray]
  };
  const spreadsheetId = 'here_goes_the_spreadsheet_id';
  const range = 'A:A';
  const optionalArgs = {valueInputOption: "USER_ENTERED"};
  Sheets.Spreadsheets.Values.append(resource, spreadsheetId, range, optionalArgs);
}

當我調用它時,作為回報,我收到以下錯誤:

GoogleJsonResponseException:對 sheet.spreadsheets.values.append 的 API 調用失敗並出現錯誤:請求缺少所需的身份驗證憑據。 預期的 OAuth 2 訪問令牌、登錄 cookie 或其他有效的身份驗證憑據。 請參閱https://developers.google.com/identity/sign-in/web/devconsole-project

不用問,我點擊了鏈接 :-) 它解釋了如何在開發者控制台中創建 OAuth 2.0。 創造了✅。 但后來它並沒有解釋如何實際授權腳本。 我希望在調用 Sheets API 之前,我應該能夠觸發啟動權限對話框。

我看到以下可能的選項:

  1. 而不是Sheets....使用URLFetch
  2. 觸發身份驗證(首選)。 這里有什么提示嗎?

更新我已經實現testAddSalaryLog() ,它與原始函數完全相同,但具有硬編碼值。 它有效! 這讓我認為解決方案是強制觸發權限屏幕。

我有 3 個問題/建議:

問題 1。

由於您使用的是 Sheets API。 您是否在腳本中啟用了Google Sheets API 高級服務 Editor > Service > Google Sheet API

在此處輸入圖像描述

在此處輸入圖像描述

問題2。

您是否通過查看項目Overview來查看是否將“Sheets API 范圍”添加到腳本中? 如果它們不是自動添加的,您需要按照以下步驟手動添加它們

  1. 訪問“項目設置”以在編輯器中啟用清單文件。 在此處輸入圖像描述

  2. 返回編輯器並選擇“appsscript.json” 在此處輸入圖像描述

  3. 添加范圍:

    "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets" "https://www.googleapis.com/auth/drive.file", 在此處輸入圖像描述

問題 3。

你已經授權代碼了嗎?

在 Apps 腳本編輯器中,單擊Run 第一次運行示例時,它會提示您授權訪問:

選擇Review permissions > Allow.

在此處輸入圖像描述

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM