我有一个关于使用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.Range1
和obj["Range1"]
。{ "Range1":[### values ###], "Range2":[### values ###] }
参考:
- 方法:spreadsheets.values.batchGet