Google Sheets API-一次获取多个命名范围



我有一个关于使用java脚本的google表单api的快速问题。我可以同时输入多个范围(例如命名范围(以保持较低的请求数量吗?

到目前为止我拥有的代码:

const RANGE = "'GM Cheat Sheet'!";
const response = await fetch(
`https://sheets.googleapis.com/v4/spreadsheets/${ID}/values/${RANGE}?key=${API_KEY}`
);
const { values } = await response.json();
console.log(values);

感谢您的帮助:(

我尝试定义范围如下:

const RANGE=["GM备忘单'!Range1","GM备忘表'!RANGE 2"];

这不起作用。

在您的情况下,使用"方法:电子表格.values.batchGet"?使用此方法时,一个API调用可以使用多个范围。当这反映在脚本中时,它将变为如下。

修改的脚本:

const API_KEY = "###"; // Please set your API key.
const ID = "###"; // Please set your Spreadsheet ID.
const RANGE = ["Range1", "Range2"]; // This is from your question.
const ranges = RANGE.map(e => `ranges=${encodeURIComponent(e)}`).join("&");
const response = await fetch(`https://sheets.googleapis.com/v4/spreadsheets/${ID}/values:batchGet?key=${API_KEY}&${ranges}`);
const { valueRanges } = await response.json();
const obj = valueRanges.reduce((o, { values }, i) => (o[RANGE[i]] = values, o), {});
console.log(obj);
  • 运行此脚本时,将从RANGE的范围中检索值。

  • 在命名范围的情况下,命名范围的名称是Google电子表格中的唯一值。因此,在这种情况下,当";Range1";以及";Range2";是命名范围,则可以使用const RANGE = ["Range1", "Range2"];

  • 通过添加const res = valueRanges.reduce((o, { values }, i) => (o[RANGE[i]] = values, o), {});,返回的值如下。通过此操作,可以将命名范围的值检索为obj.Range1obj["Range1"]

    {
    "Range1":[### values ###],
    "Range2":[### values ###]
    }
    

参考:

  • 方法:spreadsheets.values.batchGet

最新更新