我是新来的。预先感谢您的建议。
我正在开发一个应用程序,它将询问用户他们制作了多少个物品。 用户将输入一个数字。然后,我的应用程序应在名为“ Items_Made”的表中创建许多新记录。
例如该应用程序询问“您制作了多少个项目?”,用户输入“ 19”,然后在“ Items_Made”表中创建了19条新记录。
我设法收集了一些创建一个新记录的代码(如下所示),但是我希望它创建多个记录。我可能需要某种循环或“ while”功能,但不确定如何执行。
var ceateDatasource = app.datasources.Items_Made.modes.create;
var newItem = ceateDatasource.item;
ceateDatasource.createItem();
此代码成功创建1条记录。我希望它能够创建多个。
答案 0 :(得分:0)
我建议创建一个下拉列表或文本框,供用户选择/输入要创建的项目数,然后将以下代码附加到“创建”按钮上:
var createDatasource = app.datasources.Items_Made.modes.create;
var userinput = Number(widget.root.descendants.YourTextboxOrDropdown.value);
for (var i = 0; i <= userinput; i++) {
var newItem = createDatasource.item;
createDatasource.createItem();
}
使用用户输入进行简单循环即可完成此操作。
答案 1 :(得分:0)
不建议通过客户端脚本创建很多记录,特别是如果您失去连接或应用程序被错误关闭时。我认为,处理此问题的最佳方法是通过server script处理两件事:首先,它更可靠,其次,它更快。就像官方文档中的示例一样,要创建记录,您需要执行以下操作:
// Assume a model called "Fruits" with a string field called "Name".
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi"; // properties/fields can be read and written.
app.saveRecords([newRecord]); // save changes to database.
上面的示例是有关如何仅创建一条记录的清晰示例。要一次创建多条记录,可以使用如下的for
语句:
function createRecordsInBulk(){
var newRecords = [];
for(var i=0; i<19; i++){
var newRecord = app.models.Fruits.newRecord();
newRecord.Name = "Kiwi " + i;
newRecords.push(newRecord);
}
app.saveRecords(newRecords);
}
在上面的示例中,您启动 newRecords ,这是一个空数组,它将负责保存所有要立即创建的新记录。然后使用for
语句,生成19条新记录,并将它们推入 newRecords 。最后,循环完成后,您可以使用 app.saveRecords 并通过将 newRecords 数组作为参数来一次保存所有记录。
现在,所有这一切都在服务器端发生。显然,您需要一种从客户端调用此方法的方法。为此,您需要使用google.script.run方法。因此,在客户端,您需要执行以下操作:
google.script.run.withSuccessHandler(function(result) {
app.datasources.Fruits.load();
}).createRecordsInBulk();
所有这些信息都清楚地记录在app maker official documentation site上。我强烈建议您始终先检查那里,因为我相信通过阅读文档可以更快地解决问题。