google-apps-script - 如何重新执行 App Maker Datasource 的查询脚本
问题描述
目标
使用 App Maker 收集用户生日并仅显示本月的生日。
问题
我有一个数据模型,persons
. 在该模型中有两个数据源,默认persons
和第二个birthdaysThisMonth
。数据源查询脚本birthdaysThisMonth
正确运行并仅从模型返回本月的生日persons
。
persons
但是,当我更改数据源中的生日时,数据birthdaysThisMonth
源保持不变,例如,查询脚本birthdaysThisMonth
未重新执行。
要更改生日,我从日期选择器中选择一个新日期,新值显示在表格中。我没有使用提交按钮,当日期选择器失去焦点时,我看到了变化。
我试过的
此脚本在未设置为的数据源中作为查询脚本执行。它返回我想要的记录。birthdaysThisMonth
Manual save mode
function setBirthdays() {
var calcRecords = [];
var personsRecords = app.models.persons.newQuery().run();
for (i=0; i<personsRecords.length; i++) {
var id = app.models.persons.newQuery().filters.Id._equals = i;
if (personsRecords[i].birthdate.getMonth() == thisMonth()) {
var calcRecord = app.models.persons.newRecord();
calcRecord.emailSecondary = personsRecords[i].emailSecondary;
calcRecord.birthdate = personsRecords[I].birthdate;
calcRecord.Id = personsRecords[i].Id;
calcRecords.push(calcRecord);
}
}
return calcRecords;
}
问题
birthdaysThisMonth
更新数据后如何重新执行查询脚本persons
。如何触发查询,以便它重新评估数据persons
并相应地过滤。
使用事件onAfterSave
似乎很有希望,但我还没有找到这样的例子。
顺便提一句
如果可能的话,我希望这项工作发生在服务器端。
解决方案
有关答案,请参阅 Markus Malessa 的评论。
不幸的是,您不能使用诸如 onAfterSave 之类的服务器事件来触发在客户端上重新加载数据源,因此您提出的解决方案将不起作用。似乎您唯一可能的解决方案是使您的人员数据源成为手动保存数据源,以更改出生日期的形式,您将需要一个调用 widget.datasource.saveChanges() 的“保存”按钮,并在该函数中合并一个回调,它将重新加载您的birthdaysThisMonth 数据源
我试图推/拉数据的方式不是很好。看起来手动模式提供了我需要的功能类型。
推荐阅读
- firebase - 有没有办法检索 Firestore 集合中的文档并将它们存储为列表
? - python - 如何在 Python 中注释 `apply` 的类型?
- java - 如何解决 java.lang.RuntimeException:P3D 渲染器不在类路径中。从 Eclipse 运行处理时?
- python - 使用 Simple JWT 时如何将自定义序列化程序添加到 Djoser 令牌字段?
- java - 如何创建 i = 0 的 for 循环
- python - Soup 不会下载 HTML Python 中的所有内容
- python - Python:每个项目匹配问题的字典
- python - 如何让 pygame.MOUSEBUTTONDOWN 每次点击只运行一次?
- swift - 如何在登录页面的 alamofire 中为“错误”设置标识符
- unit-testing - 如何在单参数化测试方法中断言真假