Google 工作表 API - 按关键字搜索和 return 结果 [nodeJS]

Google Sheets API - search by keyword and return results [nodeJS]

我开发了一个使用 Google 表格作为数据库的简单应用程序。到目前为止,我只是用它来获取行,这对我来说已经足够了。但现在我想添加用户可以按工作表值搜索的功能。不幸的是,我无法在文档或互联网上找到任何使用 batchGet 方法的示例。它只允许指定范围并获取此类内容 - 而不是通过关键字。我发现 some examplesQuery API 但我认为它与我在下面提供的方法不兼容。 所以,我的问题是:我可以使用 batchGet() 按关键字搜索并获取一些特定的行吗?或者至少尽可能地扩展提供的代码,而不重写所有内容?

const { google } = require('googleapis');

const client = new google.auth.JWT(
  process.env.GS_CLIENT_EMAIL,
  null,
  process.env.GS_PRIVATE_KEY.replace(/\n/g, '\n'),
  ['https://www.googleapis.com/auth/spreadsheets.readonly']  
);

client.authorize((err) => {
  if(err) {
    console.log(err);
    return;
  }

  return client;
});

const gsrun = async (lang, page) => {
  const gsapi = google.sheets({ version: 'v4', auth: client });
  const sheetId = lang.toUpperCase();
  const spreadsheetId = process.env[`SHEET_${sheetId}`];

  const fileInfo = await gsapi.spreadsheets.get({
    spreadsheetId
  });
  
  const sheetNames = (page === null) ? fileInfo.data.sheets.map((d) => d.properties.title) : [fileInfo.data.sheets[page].properties.title];

  const data = await gsapi.spreadsheets.values.batchGet({ 
    spreadsheetId,
    ranges: sheetNames.map((name) => `${name}!A1:D200`)
  });

  const sheetValues = data.data.valueRanges.map(({ values }) => values);
  
  return {
    totalPages: fileInfo.data.sheets.length,
    items: sheetValues
  }; // [[[],[],...[]],[[],[],...[]],...[],[],...[]];
};

exports.gsrun = gsrun;

问题:

如果我没理解错的话,您想要检索特定单元格具有特定值的行。

遗憾的是,在工作表 API 请求.

期间,无法根据列值 过滤行

解决方法:

我只是过滤 API 收到的返回值。

例如,替换为:

const sheetValues = data.data.valueRanges.map(({ values }) => values);

有了这个:

const KEYWORD_COLUMN = 1; // Change according to your preferences
const KEYWORD = "My keyword"; // Change according to your preferences
const sheetValues = data.data.valueRanges.map(({ values }) => values.filter(row => row[KEYWORD_COLUMN - 1] === KEYWORD));