繁体   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