添加多条记录的更有效方法

时间:2019-07-02 22:28:25

标签: google-app-maker

这可行,但是包含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的更改而不再起作用。

1 个答案:

答案 0 :(得分:0)

我认为是model.newRecord()需要花费时间来创建每个新项目,而app.saveRecords()上的时间是可以忽略的。
您能否确认您是欧盟用户?由于我们的欧盟用户由于服务器位置而面临相同的问题(link),因此,请为该问题加注星标,并提供更多信息以帮助Google解决该问题。谢谢。