【问题标题】:google sheet api nodejs谷歌工作表 api nodejs
【发布时间】:2020-06-09 06:35:46
【问题描述】:

我在 google sheet 第一列中有数据,每个 id 都有相关数据。我想通过使用特定的 ID 号在一次搜索中获得多行。为此,我想使用 batchGetByDataFilter 我不知道如何使用,因为我是谷歌表的新手。请帮助我。 异步函数 gsrun(cl){

const gsapi=google.sheets({version:'v4',auth:cl}) 
let data = await gsapi.spreadsheets.values.batchGetByDataFilter({ 
  spreadsheetId: '1rRS3jugb-txthDdZ0x0nGSzyLna64mBmKnUVkditeTM',
  range: 'Sheet1!a1:g100'
})       

console.log(data.data.values)
}

【问题讨论】:

  • 我能问一下你的情况吗? 1. 为了在 Sheets API 中使用batchGetByDataFilter,需要将元数据设置为电子表格。这个怎么样? 2. 我能问一下您期望的结果值吗? 3. 您的gsapi 可以用于从电子表格中检索值吗?即您已经确认您的脚本的授权过程已经完成?
  • 感谢您的回复。 gsapi 能够从谷歌表中检索数据,但它正在收集整行和整列。但我只想接收特定数据。我的数据中有 5 列和很多行,第一行是 id ex。 101 和关联的行包含数据。我只想通过 id 获取数据。我第一次使用谷歌表不知道如何使用元数据。
  • 感谢您的回复。从您的回复中,我可以确认您已经完成了使用 Sheets API 从电子表格中检索值的授权。但是从i only want get data by id,我无法理解您期望的结果值。您想通过从“A”列中搜索 ID 来检索哪些值?我认为我可以通过正确理解您的目标来提出解决方案。
  • 感谢您的快速回复。我在第一行有标题名称的数据:i d,产品,价格,数量。在第二行,我有数据 101、石灰、45、1 以及直到 100 行。我想通过使用 id 获取数据行
  • 感谢您的回复。在您的情况下,您希望通过从“A”列中搜索 ID 来检索行。我的理解正确吗?

标签: node.js google-sheets google-sheets-api


【解决方案1】:

我相信你的目标如下。

  • 您想通过使用 Node.js 在“A”列中搜索 ID 来检索行。
  • 在您的脚本中,您已经完成了从电子表格中检索值的授权过程。

对于这个,这个答案怎么样?

在这种情况下,我想建议使用查询语言而不是batchGetByDataFilter。这样,查询语言就可以直接检索到搜索到的行。我认为这种方法更简单。示例脚本如下。

示例脚本:

在此脚本中,访问令牌来自clconst gsapi=google.sheets({version:'v4',auth:cl})。本例使用requestcsv-parse这两个模块。

const request = require("request");
const csvParse = require("csv-parse");

const spreadsheetId = "###";  // Please set the Spreadsheet ID.
const sheetId = "###";  // Please set the sheet ID.
const searchId = "###";  // Please set the search ID.

cl.getRequestHeaders().then((authorization) => {
  const query = `select * where A='${searchId}'`;
  const url = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/gviz/tq?tqx=out:csv&gid=${sheetId}&tq=${encodeURI(query)}`;
  let options = {
    url: url,
    method: "GET",
    headers: authorization,
  };
  request(options, (err, res, result) => {
    if (err) {
      console.log(err);
      return;
    }
    csvParse(result, {}, (err, ar) => console.log(ar));
  });
});

参考资料:

【讨论】:

  • @brownveg 欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为您的问题和解决方案将对他们有用。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
  • 抱歉延迟回复请告诉我女巫按钮需要按下
  • @brownveg 感谢您的回复。我带来的不便表示歉意。您可以在https://meta.stackexchange.com/a/65088 了解如何接受您的回答。
  • @brownveg 你能理解我的回复吗?
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多