Google app maker 如何在客户端脚本文件中一次创建多个项目/记录或保存项目/记录数组

Google app maker 如何在客户端脚本文件中一次创建多个项目/记录或保存项目/记录数组,google-app-maker,Google App Maker,我想使用客户端脚本同时创建多个记录。这就是我正在做的: var ceateDatasource = app.datasources.Reservation.modes.create; var newItem = ceateDatasource.item; newItem.User = user; //'eric' newItem.Description = description; //'000' newItem.Location_Lab_fk = lab.value.Id; //'T' ne

我想使用客户端脚本同时创建多个记录。这就是我正在做的:

var ceateDatasource = app.datasources.Reservation.modes.create;
var newItem = ceateDatasource.item;

newItem.User = user; //'eric'
newItem.Description = description; //'000'
newItem.Location_Lab_fk = lab.value.Id; //'T'
newItem.Area_fk = area.value.Id; //'L'
newItem.Equipment_fk = equipment.value.Id; //'S'

for(var i = 0 ; i < 3; i ++) {
  newItem.Start_Date = startDate;
  newItem.Start_Hours = '03';
  newItem.Start_Minutes = '00';

  newItem.End_Date = startDate;
  newItem.End_Hours = '23';
  newItem.End_Minutes = '30';

  // Create the new item
  ceateDatasource.createItem();
}
var ceateDatasource=app.datasources.Reservation.modes.create;
var newItem=ceateDatasource.item;
newItem.User=User;//'埃里克的
newItem.Description=Description;//'000'
newItem.Location\u Lab\u fk=Lab.value.Id;//'不
newItem.Area_fk=Area.value.Id;/'我是
newItem.device\u fk=device.value.Id;//'是的
对于(变量i=0;i<3;i++){
newItem.Start_Date=开始日期;
newItem.Start_Hours='03';
newItem.Start_Minutes='00';
newItem.End_Date=开始日期;
newItem.End_Hours='23';
newItem.End_Minutes='30';
//创建新项目
ceateDatasource.createItem();
}
但我得到的结果是:

创建了三条记录,但只有第一条记录有数据。其他两条记录的字段中有空值。我怎样才能做到这一点

谢谢



更新(2019-3-27):

通过将所有内容放入for循环块中,我可以使其正常工作。不过,我还有一个问题

有没有类似下面示例代码的方法

var recordData = [Data1, Data2, Data3] 
var ceateDatasource;
var newItem = new Array(recordData.length) ;

for(var i = 0 ; i < recordData.length; i ++) {
  ceateDatasource = app.datasources.Reservation.modes.create;
  newItem[i] = ceateDatasource.item;

  newItem[i].User            = recordData[i].user;
  newItem[i].Description     = recordData[i].Description;
  newItem[i].Location_Lab_fk = recordData[i].Location_Lab_fk;
  newItem[i].Area_fk         = recordData[i].Area_fk;
  newItem[i].Equipment_fk    = recordData[i].Equipment_fk;

  newItem[i].Start_Date    = recordData[i].Start_Date;
  newItem[i].Start_Hours   = recordData[i].Start_Hours;
  newItem[i].Start_Minutes = recordData[i].Start_Minutes;

  newItem[i].End_Date    = recordData[i].End_Date;
  newItem[i].End_Hours   = recordData[i].End_Hours;
  newItem[i].End_Minutes = recordData[i].End_Minutes;
}

// Create the new item
ceateDatasource.createItem();
var-recordData=[Data1,Data2,Data3]
var ceateDatasource;
var newItem=新数组(recordData.length);
对于(变量i=0;i
首先,它准备一个数组“newItem”,一次只调用“ceateDatasource.createItem()”来保存所有新记录(或项)。 我尝试使用此方法,但它只保存最后一条记录“newItem[3]”

我需要在“ceateDatasource.createItem()”中编写回调函数,但Google App Maker总是显示一条警告“不要在循环中生成函数”。那么,有没有方法一次调用“createItem()”来保存多条记录?或者有一些像“array.push”这样的函数可以使用吗

谢谢

根据AppMaker的要求:

创建数据源是用于在特定数据源中创建项的数据源。其属性始终由草稿项填充,该草稿项可通过编程方式绑定或设置

您试图做的是从同一草稿项创建三个项。这就是为什么你会看到你得到的结果。如果要创建多个项,则需要为每个项创建一个草稿项,因此只需将所有代码放入for循环中

for(var i = 0 ; i < 3; i ++) {

  var ceateDatasource = app.datasources.Reservation.modes.create;
  var newItem = ceateDatasource.item;

  newItem.User = user; //'eric'
  newItem.Description = description; //'000'
  newItem.Location_Lab_fk = lab.value.Id; //'T'
  newItem.Area_fk = area.value.Id; //'L'
  newItem.Equipment_fk = equipment.value.Id; //'S'

  newItem.Start_Date = startDate;
  newItem.Start_Hours = '03';
  newItem.Start_Minutes = '00';

  newItem.End_Date = startDate;
  newItem.End_Hours = '23';
  newItem.End_Minutes = '30';

  // Create the new item
  ceateDatasource.createItem();
}

嗨,莫菲尼斯莫,谢谢你的帮助。它现在可以工作了。另一个问题是,如果新项是一个数组,它能否将数组创建到数据源中?这意味着不要使用for循环逐个创建新项目。谢谢。@EricCW我不确定我是否真的理解了,我需要一些代码示例来理解你想问的问题。嗨,Morfinismo,对不起,我没说清楚。我已经在上面的问题中添加了一些更新,谢谢。
app.datasources.Reservation.saveChanges(function(){
     //TODO: Callback handler
});