如何使用 Google 表格范围中的特定单元格?

问题描述 投票:0回答:1

我正在创建一个 Discord 机器人。每当我使用链接到它的命令时,它就会起作用。但是,它显示设置范围内所有单元格中的所有数据。如何将特定单元格移出范围并使用它?

我一直这样做的方法是将范围替换为特定单元格,但我觉得这不是最实用的方法。

有人可以帮忙吗?我对 JS 还很陌生,所以任何提示将不胜感激。

async function readCerts() {
  const sheets = google.sheets({
    version: 'v4',
    auth
  });
  const spreadsheetId = 'myIdHere';
  const range = 'Overview!B5:H60';
  try {
    const response = await sheets.spreadsheets.values.get({
      spreadsheetId,
      range
    });
    const rows = response.data.values;
    return rows;
  } catch (error) {
    console.error('error', error);
  }
}

(async() => {
  const pcc = await readCerts();
  if (interaction.commandName === 'stats') {
    const maar = new EmbedBuilder()
      .setTitle('Statistics for Current Month')
      //.setDescription('cool description here')
      .setColor('Red')
      .setThumbnail('https://i.imgur.com/9GKhYQf.png')
      .setFooter({
        text: 'DroneOS',
        iconURL: 'https://i.imgur.com/9GKhYQf.png'
      })
      .setTimestamp()
      .addFields({
        name: `Total AARs: `,
        value: `${raar}`,
        inline: false,
      });
    interaction.reply({
      embeds: [maar]
    });
  }
})()
javascript discord discord.js google-sheets-api
1个回答
0
投票

从您的以下回复来看,

我有一个链接到我的机器人的谷歌电子表格,范围内的单元格是 B5-H60,我只想使用 E20、F30、G50 和 C10 我如何获取该单元格信息?

我对你的实际预期结果的理解如下。

  • 您想要使用 Sheets API 从单元格
    E20, F30, G50, and C10
    检索单元格值。

在这种情况下,使用“方法:spreadsheets.values.batchGet”怎么样?当这反映在您的脚本中时,它会变成如下所示。

修改后的脚本:

在此修改中,您的功能

readCerts
被修改。在此修改中,为了从 E20、F30、G50 和 C10 检索单元格值,使用“方法:spreadsheets.values.batchGet”。

async function readCerts() {
  const spreadsheetId = "myIdHere";
  const sheetName = "Overview";
  const cells = ["E20", "F30", "G50", "C10"];

  const ranges = cells.map((c) => `'${sheetName}'!${c}`);
  const sheets = google.sheets({ version: "v4", auth });
  try {
    const response = await sheets.spreadsheets.values.batchGet({ spreadsheetId, ranges });
    const rows = response.data.valueRanges.reduce((o, { values }, i) => ((o[cells[i]] = values[0][0]), o), {});
    return rows;
  } catch (error) {
    console.error("error", error);
  }
}
  • 运行此脚本时,

    rows
    的值如下。

    {
      "E20": "cell value of E20",
      "F30": "cell value of F30",
      "G50": "cell value of G50",
      "C10": "cell value of C10"
    }
    
  • 当您只想以

    ["E20", "F30", "G50", "C10"]
    的顺序检索值作为一维数组时,请按如下方式修改
    const rows = response.data.valueRanges.reduce((o, { values }, i) => ((o[cells[i]] = values[0][0]), o), {});

    const rows = response.data.valueRanges.map(({ values }) => values[0][0]);
    

注:

  • 在此修改中,假设您的客户端可以访问电子表格。请注意这一点。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.