簡體   English   中英

無效的 JSON 有效負載從 JavaScript/Ajax 接收到 Google 表格的寫入

[英]Invalid JSON Payload Received writing to Google Sheet from JavaScript/Ajax

我的目標是通過客戶端的 Ajax/JavaScript 調用寫入現有的 Google 表格。

但是,我目前收到以下錯誤:

收到無效的 JSON 有效載荷。 未知名稱 "{"range":"Sheet1:A8,C8":"majorDimension","ROWS":"values",[["Field1","Field2":"Field3"]]}"。 無法綁定查詢參數:字段 '{"range":"Sheet1,A8:C8","majorDimension":"ROWS","values",[["Field1"."Field2","Field3"]]}' 可以在請求消息中找不到。

這是我的 JavaScript 代碼:

const sheetID = "--privateField--";
const key = "--privateField--";
var url = "https://sheets.googleapis.com/v4/spreadsheets/"+sheetID+"/values:batchUpdate/?key="+key;
$.ajax({
    url: url,
    type: 'PUT',
    dataType: 'jsonp',
    valueInputOption: 'USER_ENTERED',
    data: JSON.stringify({
        range: 'Sheet1!A8:C8',
        majorDimension: 'ROWS',
        values: [
            ['Field1', 'Field2', 'Field3']
        ]
    }),
    headers: {
        "Content-Type": "application/json"
    },
    success: function(data) {
        console.log(data);
    },
    error: function(data) {
        console.log(data);
    }

其中 sheetID & key 被替換為實際生產值。

根據我發現的不同堆棧溢出結果,我已經嘗試了這個 API 調用的許多不同變體,但沒有任何工作。 在我看來,我已經正確指定了“值”(數組數組),但錯誤消息似乎另有說明。

我之前已經能夠在客戶端使用 Ajax/JavaScript 從 Google 表格中讀取數據,現在我正在嘗試獲取一個用於寫入工作表的示例。

任何建議或提示將不勝感激。

修改點:

  • My goal is to write to an existing Google Sheet via a Ajax/JavaScript call on the client-side. 和您的顯示腳本,在這種情況下,API 密鑰不能用於更新電子表格。 不幸的是,這似乎是當前的規范。 在這種情況下,需要使用訪問令牌。 請注意這一點。

    • 為了檢索訪問令牌,我認為這個官方文檔很有用。 參考而且,我認為您也可以在 Stackoverflow 上看到它。
  • 當您想在您的腳本中使用 Sheets API 的電子表格.values.batchUpdate 方法時,需要使用 POST 方法。

  • 並且,請求正文需要修改。

我認為您當前問題的原因是由於上述幾點。 當這些點反映在你的腳本中時,它變成如下。

修改后的腳本:

const sheetID = "--privateField--";
const accessToken = "### your access token ###";
var url = "https://sheets.googleapis.com/v4/spreadsheets/" + sheetID + "/values:batchUpdate";
var requestBody = {
  valueInputOption: 'USER_ENTERED',
  data: [{
    range: 'Sheet1!A8:C8',
    majorDimension: 'ROWS',
    values: [['Field1', 'Field2', 'Field3']]
  }]
};
$.ajax({
  url: url,
  type: 'POST',
  data: JSON.stringify(requestBody),
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + accessToken
  },
  success: function (data) {
    console.log(data);
  },
  error: function (data) {
    console.log(data);
  }
});
  • 當我測試這個腳本時,我確認[['Field1', 'Field2', 'Field3']]的值放在“Sheet1”的第 8 行。

參考:

暫無
暫無

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

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