这可行,但是包含60个项目的电子表格需要15秒。
function addToModel(name,birth,age){
var newRecord = app.models.ImportData.newRecord();
newRecord['PRESIDENT'] = name;
newRecord['BIRTH_PLACE'] = birth;
newRecord['AGE_ELECTED'] = age;
app.saveRecords([newRecord]);
}
function getSpreadsheet(){
var sh = SpreadsheetApp.openById("zzz");
var ss = sh.getSheetByName("Sheet1");
var data = ss.getDataRange().getValues();
THIS WAS WAY ONE, TAKES 15 SECONDS
for (var i=1; i<data.length;i++)
{
addToModel(data[i][1],data[i][2],data[i][3].toString());
}//for loop
}
但是我注意到命令是saveRecordS而不是saveRecord,并且在Google Apps脚本中包含任何内容,因此调用越少越好,因此我尝试了此操作,但它不起作用
//SAME SPREADSHEET INFO
var result = [];
for (var i=0; i<data.length;i++)
{
var newRecord = app.models.ImportData.newRecord();
newRecord['PRESIDENT'] = data[i][1];
newRecord['BIRTH_PLACE'] = data[i][2];
newRecord['AGE_ELECTED'] = data[i][3].toString();
result.push(newRecord);
}//for loop
app.saveRecords([result]);
预期结果:表中的新记录比第一个版本快得多。实际结果:从最后一行(saveRecords)触发的“无法从未定义中读取属性”键”。我两次都尝试了app.saveRecords(result)和([result]),同样的问题。
注意:此示例来自一个appmaker大学教程,由于appmaker v2的更改而不再起作用。
答案 0 :(得分:0)
我认为是model.newRecord()需要花费时间来创建每个新项目,而app.saveRecords()上的时间是可以忽略的。
您能否确认您是欧盟用户?由于我们的欧盟用户由于服务器位置而面临相同的问题(link),因此,请为该问题加注星标,并提供更多信息以帮助Google解决该问题。谢谢。