【问题标题】:Google Sheets API nodejs - get index of the cell that contains a stringGoogle Sheets API nodejs - 获取包含字符串的单元格的索引
【发布时间】:2020-08-02 01:23:29
【问题描述】:

首先,我究竟如何访问单元格的内容?我正在创建一个不和谐机器人,它使用游戏的公共电子表格值显示游戏中不同单位的统计数据:https://docs.google.com/spreadsheets/d/1WqogbXoOThLkt2kL3QJbFGT3Kc_x_XwwmK2FCJdrnvQ/edit#gid=1714057504

所以用户将输入迷你(单位)的名称,我需要找到包含单位名称的单元格,然后获取其统计数据的值,这些值将位于同一行。

【问题讨论】:

  • 当我看到您的示例电子表格时,电子表格中有很多表格。所以我无法理解你的目标。我为此道歉。为了正确理解您的目标,您能否提供您期望从示例电子表格中获得的示例输入和输出?顺便说一句,在您的目标中,是否只需要使用 Node.js?
  • @Tanaike 用户输入单位名称,例如“Turret Truck”,代码需要找到“Turret Truck”在“Republic Minis”工作表中,然后输出“Turret Truck”行中几乎所有内容的值,但它需要知道每个值对应的内容(即 40 是“最大级别”)
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从您的回复中,我无法理解您期望从您的示例电子表格中获得的示例输入和输出。而且,我不明白你是否只需要使用 Node.js。
  • 没关系,我设法弄清楚该怎么做,不过感谢您的回复
  • 如果您想出了解决方案,请将其作为答案发布,以便其他人可以从中受益。

标签: node.js google-sheets-api


【解决方案1】:

@Raserhin 建议我发布我如何解决我的问题,所以就在这里。

我使用spreadsheets.values.get() 来获取工作表的数据。 data.values 显然是一个二维数组,所以现在一切都很容易,所以我可以按照 @Query 的建议。我对 3 张纸中的每张都重复了一遍(因为游戏中有 3 个单位派系)。我将所有 2D 数组放入 3D 数组中。然后当用户输入单位名称时,有一个外部for循环,每个派系迭代3次,然后嵌套在其中的另一个for循环对每个单位名称进行迭代,每次检查名称是否与用户输入匹配.

const {google} = require("googleapis");
const sheets = google.sheets({version: "v4", auth: APIKey});

async function gsrun(cl){
    const opt = {
        spreadsheetId: spreadsheetId,
        range: 'Republic Minis'
    };
          
    let repData = await sheets.spreadsheets.values.get(opt);
    let repDataArray = repData.data.values;
    
    opt.range = 'Dominion Minis';
    let domData = await sheets.spreadsheets.values.get(opt);
    let domDataArray = domData.data.values;

    opt.range = 'Empire Minis';
    let empData = await sheets.spreadsheets.values.get(opt);
    let empDataArray = empData.data.values;

    var miniArray = [repDataArray, domDataArray, empDataArray];

    ...

【讨论】:

    【解决方案2】:

    google sheet API 不支持按值查找。

    由于您只有查看工作表的权限,唯一可行的解​​决方案是在 for 循环中遍历工作表的行,并在找到匹配项时中断。

    还有其他解决方案,例如使用带有 LOOKUP 函数的公式,但这需要对文档的写入权限。

    【讨论】:

    • 我是 Google Sheets api 的新手,我什至不知道它的语法,我如何实际访问单元格中的值?
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多