首页 > 解决方案 > Google表格脚本将输入字段答案移动到空白输出字段

问题描述

我仍在为我工作的音乐工作室制作一张纸,但我又被难住了。最近几天我一直在阅读诸如

1) https://developers.google.com/apps-script/reference/spreadsheet/sheet

2)https://mashe.hawksey.info/2015/03/google-sheets-move-a-row-of-data-to- 
another-sheet-based-on-cell-value/

试图将一个单元格从摄入表单复制到不同工作表上的输出列。

我目前正在使用我在 StackOverflow 上找到的这段代码,我尝试对其进行编辑以满足我的需要。

function NewBand(){ //Triggered by button on "New"
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var target = SpreadsheetApp.getActiveSpreadsheet();

  
  var source_sheet = ss.getSheetByName('New');
  var target_sheet = target.getSheetByName('Roster');
  var source_range = source_sheet.getRange('D3');
  var target_range = target_sheet.getRange('C10');
    source_range.copyTo(target_range);
  var last_row = target_sheet.getLastRow();
  target_sheet.insertRowAfter(last_row);
  var target_range = target_sheet.getRange('C'+(last_row+1));

  var source_sheet = ss.getSheetByName('New');
  var target_sheet = target.getSheetByName('Info');
  var source_range = source_sheet.getRange('D5');
  var target_range = target_sheet.getRange('B8');
    source_range.copyTo(target_range);
  var last_row = target_sheet.getLastRow();
  target_sheet.insertRowAfter(last_row);
}

目前,当它运行时,它会正确地将数据添加到正确的列中,但是

1)它不会将数据插入到下一个单元格中,保留先前插入的数据。- 它覆盖当前的前一个条目,而不是向下移动一行并创建新数据。

2)当我运行它时,它也会添加一堆空白行。

3)如果有更简单的方法来做到这一点,那也很棒!如果有人能让我走上正确的轨道或让第一个表格正确输出,那么我可以完成剩下的工作,我将永远感激不尽!

如果有帮助,这里是我的项目的一个非常简单的版本: https ://docs.google.com/spreadsheets/d/1i192uK-a-ALim7pvL-mkty_1nh_m9aghvmrxmiiRYKs/edit?usp=sharing

我对工作表“新建”中的输入表单进行了颜色编码,以匹配工作表“名册”和“信息”上我想要的输出。

如果他们有贝宝或苹果支付,我也很乐意给他们几美元的小费

标签: javascriptgoogle-apps-scriptgoogle-sheetsgoogle-api

解决方案


这个改装怎么样?在此修改中,它检索值“D3:D15”并将每个值放入工作表“Roster”和“Info”最后一行的下一行。

修改后的脚本:

function NewBand() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetNew = ss.getSheetByName('New');
  var sheetRoster = ss.getSheetByName('Roster');
  var sheetInfo = ss.getSheetByName('Info');
  var values = sheetNew.getRange("D3:D15").getValues();
  var D3, D5, D7, D9, D11, D13, D14, D15;
  [D3, _, D5, _, D7, _, D9, _, D11, _, D13, D14, D15] = Array.prototype.concat.apply([], values);
  sheetRoster.appendRow([,null,D3,D7,null,null,null,null,null,D9,null,null,null,null,null,null,D11]);
  sheetInfo.appendRow([null,D5,D14,D15,null,null,null,D11]);
}

笔记:

  • 在这个脚本中,它假设最后一行的下一行如下。
    • 除了“名册”表中的 C、D、J 和 Q 之外的列中没有值
    • 除了“信息”表中的 B、C、D 和 H 之外,列中没有值。

参考:


推荐阅读