Google表格脚本将输入字段的答案移至空白输出字段

时间:2018-11-18 17:55:58

标签: javascript google-apps-script google-sheets google-api

我仍在为我工作的Music Studio制作一张纸,而我又一次陷入了困境。 最近几天我一直在阅读

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

我在工作表“ New”上对输入表单进行了颜色编码,以匹配工作表“ roster”和“ info”上所需的输出。

如果他们有贝宝或苹果薪水,我也很乐意为他们的时间给几个小费

1 个答案:

答案 0 :(得分:0)

此修改如何?在此修改中,它检索值“ 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]);
}

注意:

  • 在此脚本中,假设最后一行的下一行如下。
    • “ Roster”表中的C,D,J和Q列中没有其他值。
    • “信息”表中的B,C,D和H除外,列中没有其他值。

参考文献: