簡體   English   中英

從沒有表格的 Google 表格中獲取數據 API

[英]Get data from Google Sheets without Sheets API

我創建了一個應用程序(React Native),我需要在其中顯示谷歌表單的響應,所以我創建了響應表。

雖然 Sheets API 是最好的解決方案,但我不想使用它(除非沒有其他選擇)。

有沒有辦法在不使用 Google API 的情況下從工作表中獲取數據(csv/json/arrays?/其他任何東西)? 我只想要單元格中的值,沒有別的。

筆記:

  • 我想解析 JavaScript 中的數據。

我相信你的目標如下。

  • 您想在不使用表格 API 的情況下從 Google 電子表格中檢索值。
    • 我知道在這種情況下,您希望在不使用訪問令牌和 API 鍵的情況下檢索值。
  • 您想使用 Javascript 來實現此目的。

問題和解決方法:

當 Google 電子表格與表格 API 一起使用時,需要使用訪問令牌和 API 密鑰。 當您想在不使用訪問令牌和 API 鍵的情況下從 Google 電子表格中檢索值時,在此答案中,我想使用由 Google Apps 腳本創建的 Web 應用程序提出以下解決方法。 此解決方法的流程如下。

  1. 從 Javascript 請求 Web 應用程序。
  2. 在 Web 應用程序中,這些值是從 Google 電子表格返回的。
    • 在此解決方法中,不需要公開共享 Google 電子表格。
  3. 從位於 Javascript 的 Web 應用程序中檢索值。

用法:

請執行以下流程。

1. 新建 Google Apps Script 項目。

Web Apps 的示例腳本是 Google Apps 腳本。 所以請創建一個 Google Apps Script 項目。

如果要直接創建,請訪問https://script.new/ 在這種情況下,如果您沒有登錄 Google,則會打開登錄屏幕。 所以請登錄谷歌。 至此,Google Apps Script 的腳本編輯器被打開。

2. 准備腳本。

請將以下腳本(Google Apps 腳本)復制並粘貼到腳本編輯器中。 此腳本適用於 Web 應用程序。

function doGet(e) {
  const id = e.parameter.spreadsheetId;
  const sheetName = e.parameter.sheetName;
  const sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName);
  const values = sheet.getDataRange().getValues();
  return ContentService.createTextOutput(JSON.stringify({values: values})).setMimeType(ContentService.MimeType.JSON);
}

3. 部署 Web 應用。

  1. 在腳本編輯器上,通過“發布”->“部署為 web 應用程序”打開一個對話框。
  2. Select "Me"表示"Execute the app as:"
    • 這樣,腳本作為所有者運行。
  3. Select “任何人,甚至匿名” ,用於“誰有權訪問應用程序:”
    • 在這種情況下,不需要請求訪問令牌。 我認為我為您的目標推薦此設置。
    • 當然,您也可以使用訪問令牌。 屆時,請將此設置為“任何人” 並且請包括https://www.googleapis.com/auth/drive.readonlyhttps://www.googleapis.com/auth/drive的 scope。 這些范圍是訪問 Web 應用程序所必需的。
  4. 單擊“部署”按鈕作為新的“項目版本”。
  5. 自動打開“需要授權”對話框。
    1. 單擊“查看權限”。
    2. Select 自己的帳戶。
    3. 在“此應用未驗證”中單擊“高級”。
    4. 點擊“轉到###項目名稱###(不安全)”
    5. 單擊“允許”按鈕。
  6. 單擊“確定”。
  7. 復制 Web 應用程序的 URL。 這就像https://script.google.com/macros/s/###/exec
    • 當您修改 Google Apps 腳本時,請重新部署為新版本。 這樣,修改后的腳本就會反映到 Web 應用程序中。 請注意這一點。

4. 使用 Web 應用程序運行 function。

您可以使用以下腳本從 Google 電子表格中檢索值。

const baseUrl = "https://script.google.com/macros/s/###/exec";  // Please set your Web Apps URL.
const para = {
  spreadsheetId: "###",  // Please set your Google Spreadsheet ID.
  sheetName: "Sheet1"  // Please set the sheet name you want to retrieve the values.
};
const q = new URLSearchParams(para);
const url = baseUrl + "?" + q;
fetch(url)
  .then(res => res.json())
  .then(res => {
    const values = res.values;
    console.log(values);
  });

如果要使用 curl 命令測試上述 Web 應用程序,還可以使用以下 curl 命令。

$ curl -L "https://script.google.com/macros/s/###/exec?spreadsheetId=###&sheetName=Sheet1"

筆記:

  • 當您修改 Web Apps 的腳本時,請將 Web Apps 重新部署為新版本。 這樣,最新的腳本就會反映到 Web 應用程序中。 請注意這一點。
  • 在我的環境中,最近,我已經確認,當使用 Javascript 從公開共享的電子表格和發布的電子表格中檢索到 Web 的值時,會發生與 CORS 相關的錯誤。 我擔心這樣的問題也可能發生在您的環境中。 所以為了實現你的目標,我建議使用 Web Apps。 在這種情況下,我已經確認沒有錯誤發生。

參考:

暫無
暫無

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

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