javascript - 应用程序制作工具删除表中的项目并更新

标签 javascript import google-app-maker

我有一个应用程序,我希望能够从 Google 电子表格中获取列,并在我的应用程序中的表格上创建一个列表。我还希望能够从此表中删除项目。

到目前为止我正在使用AMU库函数AMU.deleteAll,它所做的只是

AMU.deleteAll = function(widget){
  var records = widget.datasource.items;
  records.forEach(function(record){
   record._delete();
  });  
};

因此,当我有一个全新的空白表格时,当我使用 AMU.import.fromSpreadsheet 时,我的应用程序可以从我的电子表格进行更新(在此处查看完整的库 goo.gl/RkeqZw )它将从我的电子表格中取出所有项目并将它们正确地放置在我的表格中,之后我可以使用删除功能删除表格上的所有项目。这就是事情变得棘手的地方,当我再次尝试使用导入功能时,列表中会填充空条目,如果我尝试使用删除功能,则会收到错误:

"Drive Table internal error. Record not found. Caused by: Execution Failed. More information: Object not found at path: camo0A_084fQ. (HTTP status code: 404) Error: Drive Table internal error. Record not found. at deleteAllData (ServerScript:232)"

我不确定为什么会发生这种情况,对我来说,似乎正在保存数据,而删除功能仅删除该值,而不是实际的条目。

最佳答案

如果您想从模型中删除所有项目,您可以进行单个服务器调用(上面引用的代码确实对客户端上加载的每个单独项目进行服务器调用):

// server script to delete all records from model
function deleteAllRecordsFromModel() {
  var allRecords = app.models.MyModel.newQuery().run();
  app.deleteRecords(allRecords);
}

// client script to call server function
google.script.run
  .withSuccessHandler(function() {
     // TODO: Handle success (optional)
  })
  .withFailureHandler(function() {
     // TODO: Handle error (optional)
  })
  .deleteAllRecordsFromModel();

关于javascript - 应用程序制作工具删除表中的项目并更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242888/

相关文章:

javascript - 如何从 php 源创建数组 (javascript)

javascript - VueJs 将 bool 值绑定(bind)到下拉列表

javascript - 在 Google App maker 中获取时间戳的方法是什么?

google-app-maker - 谷歌应用程序制造商过滤器下拉菜单

javascript - Chart.js 条形图 : Grid color and hide label

javascript - 如何让 React onClick 工作? (即使使用箭头功能也不起作用)

java - eclipse无法导入apache tika src

python - 在不知道存在多少文件的情况下加载 py 文件并在目录的 for 循环中对类执行某些操作?

c++ - 如何将外部 dll 库导入 Borland C++ 6?

google-app-maker - AppMaker 中的过滤器