我有一个名为dataMapEN
的对象 - > var dataMapEN = {}
;
此对象有30000个条目 我正在尝试使用以下代码将它们写入Google电子表格:
var sheet = ss.getSheetByName("EN");
populateSheet(sheet, dataMapEN);
function populateSheet(sheet, dataSource){
for(item in dataSource){
sheet.appendRow([item, dataSource[item].clicks, dataSource[item].impressions, dataSource[item].cost, dataSource[item].conversionValue, dataSource[item].conversions]);
}
}
我所看到的是,要编写200个条目,脚本大约需要2分钟 每次写入工作表时脚本都会超时。
是否有更快的方式写入工作表,以便脚本在30分钟的窗口中完成?
由于
答案 0 :(得分:1)
你的脚本太慢了,因为它正在对电子表格进行30k写入调用 尝试先将所有内容放入二维数组,然后只进行一次调用 这样的事情(没有测试,因为没有例子):
var sheet = ss.getSheetByName("EN");
populateSheet(sheet, dataMapEN);
function populateSheet(sheet, dataSource){
var dataToWrite = dataSource.map(funtion(row, item) {
return [item, row.clicks, row.impressions, row.cost, row.conversionValue, row.conversions];
});
sheet.getRange(sheet.getLastRow(), 1, dataToWrite.length, dataToWrite[0].length).setValues(dataToWrite);
}
如果您的数据实际上是对象的对象,则对象数组不会迭代Object.keys(dataSource)
并返回dataSource[key].clicks
等。
你可能会遇到过多写入数据的危险,所以你可能想要用1k行或类似的东西来写。