如何正确使用Sheets.Spreadsheets.Values.update()?性能与报错咨询
Google Sheets 批量写入数组:API效率确认与错误修复
关于写入速度的结论
没错,Sheets.Spreadsheets.Values.update()确实比setValues()更快。尤其是处理你这种7万行35列的超大量数据时,前者直接调用Google Sheets REST API,跳过了Apps Script内置服务的中间处理层,批量写入的效率提升非常明显。
代码报错修复
你遇到的Invalid JSON payload错误,是因为API要求的请求体格式不对。Sheets.Spreadsheets.Values.update()的第一个参数必须是包含values字段的对象,而不是直接传入数组变量名。
正确的数组处理与代码示例
- 确保数组格式正确:
updatedArr必须是二维数组(对应表格的行和列),哪怕只有一行数据也要套成二维结构,比如[[单元格1值, 单元格2值, ...]]。 - 包装数组为API要求的结构:把数组放到
values字段中传入。
修正后的代码:
Sheets.Spreadsheets.Values.update( { values: updatedArr }, tss.getId(), `'${clickerDataSht.getName()}'!A1`, { valueInputOption: "USER_ENTERED" } );
额外优化建议
- 如果不需要Google Sheets自动解析公式、格式转换,把
valueInputOption改成"RAW",能进一步提升写入速度。 - 若要更精准控制写入范围,可以明确指定结束单元格(比如
'Sheet1'!A1:AI70000),避免API自动推断范围的额外开销。
内容的提问来源于stack exchange,提问作者DanCue
相关产品推荐
相关产品推荐

