请求有效负载大小与以下各项成比例:
-API调用的计数
-对象的计数(例如范围对象)
-要设置的值的长度
所以为了使脚本的效率得到提高,需要尽可能少的优化API调用数。如果要打电话范围值对于每一行,将有更多的有效负载开销。
下面是一个带有优化API调用的示例,以供参考:
const newValues = [
["Date", "Product", "Sales", "Customers"],
["13/03/2020", "Chocolate biscuits", 598.00, 93],
// ... and many more
];
for (let rowIndex = 0; rowIndex < newValues.length;) {
const row = newValues[rowIndex];
var bytes = JSON.stringify([row]).length;
var valuesToSet = [];
valuesToSet.push(row);
var rowCountForNextBatch = 1;
for (; (rowIndex + rowCountForNextBatch) < newValues.length; rowCountForNextBatch++) {
const nextRow = newValues[rowIndex + rowCountForNextBatch];
bytes += JSON.stringify([nextRow]).length;
if (bytes >= THRESHOLD) {
break;
}
valuesToSet.push(nextRow);
}
console.log(valuesToSet);
console.log(rowCountForNextBatch);
sheet.getRangeByIndexes(rowIndex, 0, rowCountForNextBatch, numColumns).values = valuesToSet;
await context.sync();
rowIndex += rowCountForNextBatch;
}