【问题标题】:Google form update response options instead of creating a new row谷歌表单更新响应选项而不是创建新行
【发布时间】:2013-12-02 07:04:24
【问题描述】:

如果时间戳已存在于响应电子表格中,我想编辑响应选项而不是添加新响应。 这是我尝试过的。

function trial(event) {

  var email = "xxxx@gmail.com";
  var ss = SpreadsheetApp.getActiveSheet();
  var data = ss.getDataRange().getValues();
  var body = '';

  //Comapring timestamp in each row with the timestamp entered in the form
  var i = 0;
  while(i < data.length) {
    if(data[i][0].toString() ==  event.namedValues['Timstamp'].toString()){
      body += '\n The row number: ' + i;
      data[i][1] = 'ADDDDDDD';
      data[i][2] = event.namedValues['Status'].toString();
      ss.deleteRow(event.range.getRow());
    }
    i++;
  }



  var subject = "Delete Test";
  GmailApp.sendEmail(email, subject, body);

}

我在表单中输入时间戳作为一个值(我负责传递适当的时间戳,用户无需输入它;它将被预先填写)。现在,如果有匹配项,它会删除新响应但不会修改旧响应。谁能指出我的错误。

【问题讨论】:

    标签: google-apps-script google-sheets triggers google-forms


    【解决方案1】:

    您的脚本修改了数据数组,但没有将其写回电子表格...这就是为什么您在电子表格中看不到任何更改的原因。

    只需在循环后添加一行,即可使用适当的数据更新工作表。我想可能是这样的

    ss.getRange(1,1,data.length,data[0].length).setValues(data);
    

    【讨论】:

    • 有什么办法可以将这些数据更新到另一张纸上?就像每当用户提交数据时,2 表都会更新。那可能吗??只是一个指向正确方向的指针会很棒。谢谢
    • 是的,您可以使用相同的方法写入您想要的任何表格...如果您只想写入部分数据,请使用JS数组方法按照您想要的方式拼接它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多