谷歌appmaker:数据源中的更新字段

时间:2018-02-28 02:05:35

标签: field datasource google-app-maker

以下是自定义按钮的代码。目标是为不同的按钮存储不同的性别和评级:

var gender='Ladies';
var rating='Good';
setRating(gender, rating);

setRating(性别,评级)的方法实现在客户端脚本上编写如下。目标是告诉浏览器javascript激活sendRating(性别,评级)功能。

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(性别,评级)实现。目标是告诉AppMaker javascript激活.saveRecords API以将性别和评级记录保存到名为ToiletRating的数据源。数据源包含诸如'性别'之类的字段。和'评级'。

function sendRating(gender, rating){

  var db = app.models.ToiletaRating.newRecord();
  person.Gender = gender;
  person.Rating = rating;
  app.saveRecord([db]);

}

你能帮我解释为什么我在服务器脚本行号中声明newRecord方法未定义时会出现这个错误。 3。

E
Wed Feb 28 09:47:42 GMT+800 2018
TypeError: Cannot call method "newRecord" of undefined. at sendRating (NewScript:3)

2 个答案:

答案 0 :(得分:0)

如果您想更新字段,则无需创建newRecord。您应该访问记录,进行修改并保存更改。

var query = app.models.ToiletaRating.newQuery();
var queryRun = query.run();

for(var i=0;i<queryRun.length;i++) {   
  var field=queryRun[i].FIELDTOUPLOAD;
}    
app.saveRecords([queryRun[i]]);

这应该有效。

另一方面,您确定您有一个名为“ToiletaRating”的数据源吗?我觉得你这里有语法错误。

答案 1 :(得分:0)

你的剧本中似乎有一个拼写错误(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 RatingsQ&A Forum模板,它们具有非常相似的功能