【问题标题】:Copying last form response to new last row other sheet将最后一个表单响应复制到新的最后一行其他工作表
【发布时间】:2020-05-22 17:05:50
【问题描述】:

我对使用应用程序脚本进行编码非常陌生,但我正在尝试设置一个代码,将新的 google 表单电子表格提交的最后一行传输到同一工作簿中的另一个工作表。我尝试这样做的原因是我可以使用数据进行简单的计算并编辑数据(您不能使用查询函数编辑数据)。

我有一张称为 (Form Responses 1) 的表格和一张称为 (Clients) 的表格。填写表格后,所有答案当然会自动转移到表格响应 1 表中。我想自动将 Form Response 1 表的最后一行复制到 Clients 表,以便可以编辑信息并将其用于计算,而不会丢失 Form Responses 1(不是查询)中的原始提交。

我用我非常基本的知识尝试了两个代码,但它们都不起作用。代码可能很烂,但非常感谢任何帮助和建议!

我尝试过的代码 1

function onFormSubmit(e){
  var ss = SpreadsheetApp.getSheetByName("Form responses 1")();
  var copyFromRange = 'Form responses 1!A2:M999';
  var copyToRangeStart = 'Clients!A2:M999';
  copyValuesOnly(copyFromRange, copyToRangeStart);
}

我尝试过的代码 2

function onFormSubmit(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Form responses 1');
  var r = s.getRange(s.getLastRow(),s.getLastColumn());
  var data = r.getValues();

  var row = r.getRow();
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Clients");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  targetSheet.getRange(targetSheet.getLastRow()+1,1,1,20).setValues(data);

我一直在浏览该网站,试图弄清楚这一点并了解有关脚本的更多信息,你们都帮了大忙!

【问题讨论】:

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


    【解决方案1】:
    function onFormSubmit(e){
      var ss=SpreadsheetApp.getActive();
      ss.getSheetByName('Clients').appendRow(e.values);
    }
    

    onFormSubmit Event Object

    您不想获得最后一行,因为如果提交速度很快,最后一行可能不是来自当前 onFormSubmit 触发器的那一行。

    【讨论】:

    • 我希望你意识到你不能只从脚本编辑器运行这个函数。它必须有一个事件对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多