google appmaker:更新数据源中的字段
google appmaker: update field in datasource
下面是自定义按钮的代码。 objective 是为不同的按钮存储不同的性别和等级:
var gender='Ladies';
var rating='Good';
setRating(gender, rating);
setRating(gender, rating) 的方法实现写在客户端脚本如下。 objective 是告诉浏览器 javascript 激活 sendRating(gender, rating) 函数。
function setRating(gender, rating){
google.script.run
.withFailureHandler(function(error) {
// An error occurred, so display an error message.
status.text = error.message;
})
.withSuccessHandler(function(result) {
// Report that the email was sent.
status.text = 'Thank you for the feedback';
})
.sendRating(gender, rating);
}
下面是写在服务器脚本上的 sendRating(gender, rating) 实现。 objective 是告诉 AppMaker javascript 激活 .saveRecords API 以将性别和评级记录保存到名为 ToiletRating 的数据源中。数据源包含 'Gender' 和 'Rating'.
等字段
function sendRating(gender, rating){
var db = app.models.ToiletaRating.newRecord();
person.Gender = gender;
person.Rating = rating;
app.saveRecord([db]);
}
你能帮我解释一下为什么我在服务器脚本第 3 行中声明 newRecord 方法未定义时收到此错误消息吗? 3.
E
Wed Feb 28 09:47:42 GMT+800 2018
TypeError: Cannot call method "newRecord" of undefined. at sendRating (NewScript:3)
您的脚本中似乎有错字(Toileta vs Toilet):
// your version with typo
var db = app.models.ToiletaRating.newRecord();
// version without typo
var db = app.models.ToiletRating.newRecord();
但是即使您修正了拼写错误,您的脚本也会失败。您需要使用您定义的变量来使事情正常进行:
function sendRating(gender, rating) {
// define variable
var newRecord = app.models.ToiletRating.newRecord();
// use variable
newRecord.Gender = gender;
newRecord.Rating = rating;
// Note that in original script you have one more typo:
// app.saveRecord vs app.saveRecords
app.saveRecords([newRecord]);
}
另请记住,您可以进一步改进此脚本:
- 将评分与用户相关联,以防止添加来自同一个人的多个评分
- 添加权限检查以防止用户代表其他用户添加评级
- ...
看看 Vendor Ratings and Q&A Forum 模板,它们具有非常相似的功能
下面是自定义按钮的代码。 objective 是为不同的按钮存储不同的性别和等级:
var gender='Ladies';
var rating='Good';
setRating(gender, rating);
setRating(gender, rating) 的方法实现写在客户端脚本如下。 objective 是告诉浏览器 javascript 激活 sendRating(gender, rating) 函数。
function setRating(gender, rating){
google.script.run
.withFailureHandler(function(error) {
// An error occurred, so display an error message.
status.text = error.message;
})
.withSuccessHandler(function(result) {
// Report that the email was sent.
status.text = 'Thank you for the feedback';
})
.sendRating(gender, rating);
}
下面是写在服务器脚本上的 sendRating(gender, rating) 实现。 objective 是告诉 AppMaker javascript 激活 .saveRecords API 以将性别和评级记录保存到名为 ToiletRating 的数据源中。数据源包含 'Gender' 和 'Rating'.
等字段function sendRating(gender, rating){
var db = app.models.ToiletaRating.newRecord();
person.Gender = gender;
person.Rating = rating;
app.saveRecord([db]);
}
你能帮我解释一下为什么我在服务器脚本第 3 行中声明 newRecord 方法未定义时收到此错误消息吗? 3.
E
Wed Feb 28 09:47:42 GMT+800 2018
TypeError: Cannot call method "newRecord" of undefined. at sendRating (NewScript:3)
您的脚本中似乎有错字(Toileta vs Toilet):
// your version with typo
var db = app.models.ToiletaRating.newRecord();
// version without typo
var db = app.models.ToiletRating.newRecord();
但是即使您修正了拼写错误,您的脚本也会失败。您需要使用您定义的变量来使事情正常进行:
function sendRating(gender, rating) {
// define variable
var newRecord = app.models.ToiletRating.newRecord();
// use variable
newRecord.Gender = gender;
newRecord.Rating = rating;
// Note that in original script you have one more typo:
// app.saveRecord vs app.saveRecords
app.saveRecords([newRecord]);
}
另请记住,您可以进一步改进此脚本:
- 将评分与用户相关联,以防止添加来自同一个人的多个评分
- 添加权限检查以防止用户代表其他用户添加评级
- ...
看看 Vendor Ratings and Q&A Forum 模板,它们具有非常相似的功能