使用规则自动将Sheet1上的单元格从Sheet1复制到Custom列

时间:2017-11-30 10:45:06

标签: google-sheets copy-paste google-spreadsheet-api

寻求帮助以修改以下脚本(或显示您的版本?)从B列复制单元格 Sheet2 (其中D包含" NOT_ON_WORKSHEET")(onEdit或不)到 Sheet1 的第4列(D)的最后一行,而不是当前的第1列(A)。尝试使用setValue,但无法正确应用它。

function onEdit(e) {
var ss = e.source,
    sheet = ss.getActiveSheet();
if (sheet.getName() !== 'Sheet2' || e.range.columnStart !== 4 || e.value !== 'NOT_ON_WORKSHEET') return;
e.source.getSheetByName('Sheet1')
  .appendRow(e.range.offset(0, -2, 1, 1)
  .getValues()[0]);
}

视觉解释

SHEET 1:
    Column A | Column(s)…  | Column D
    ...      | ...         | #Name#
    =================================
    ...      |             | Qwe
             | ...         | Asd
    ...      | ...         | Zxc 
             |             | <"little bug" must be copied here (Not row, only one cell B)>

SHEET 2:
    Column A | Column B    | Column D
    ...      | #Name#      | #Is on Sheet1?#
    =================================
             | Qwe         | 
    ...      | Asd         |
             | Zxc         |
    ...      | little bug  | NOT_ON_WORKSHEET

当前脚本仅将B(Sheet2)中的单元格复制到A列而不是D(Sheet1)(对于ogirinal tnx JPV

1 个答案:

答案 0 :(得分:1)

好的,我终于成功了。它与主题问题配合得很好。

function onEdit(e) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
 if (sheet.getName() !== '2' || e.range.getColumn() !== 4 || e.value !== 'Yes') return;
  var value = e.range.offset(0,-2,1,1).getValue();
  sheet = e.source.getSheetByName('1');
  var grd = sheet.getRange("D:D").getValues();
  var maxIndex = grd.reduce(function(maxIndex, row, index) {
  return row[0] === "" ? maxIndex : index;
  }, 0);
  sheet.getRange(maxIndex+2,e.range.getColumn()-2,1,1).setValue(value);
}