Более эффективный способ добавить несколько записей - PullRequest
0 голосов
/ 03 июля 2019

Так что это работает, но для электронной таблицы с 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, чем меньше вызовов, тем лучше, поэтому я попробовал это, но это не работает

//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 (результат) и ([результат]), одна и та же проблема оба раза.

Примечание: этот пример взят из учебного пособия по университету appmaker, которое больше не работает из-за изменений в appmaker v2.

...