+-
MDN

我有以下 onEdit(e) Google Apps 脚本,它在另一个工作表的下一行中填充 A:D 列。现在我想让它填充B:E列,并在同一行的A列填充 "SOP "文字。

 {
  var spreadsheet = e.source;
  var sheet = spreadsheet.getActiveSheet();
  var sourcesheetname = "SOP Register"
  var range = e.range;
  var sheet = range.getSheet();
  var row = range.getRow();
  var column = range.getColumn();
  var editedColumn = range.getColumn();
  var editedRow = range.getRow();
  var column = 7;
  var date = range.getValue();
  if(Object.prototype.toString.call(date) === '[object Date]' && editedColumn == column && editedRow > 3 && sheet.getName() == sourcesheetname) {
    var targetsheetname = "Internal Audit Register";
    var target = e.source.getSheetByName(targetsheetname);
    var numCols = sheet.getLastColumn();
    var values = sheet.getRange(row, 1, 1, numCols).getValues()[0];
    values.splice(7)
    values.splice(0, 0)
    values.splice(1, 0)
    values.splice(2, 3); // Removing undesired values
    var lastRow = target.getLastRow();
    var lastCol = target.getLastColumn();
    target.appendRow(values); // Append new row  
    sheet.hideColumns(6,2);
   }
}

下面是我的源表

Source Data

下面是脚本后的目标表数据。

enter image description here

这是我想要的结果

enter image description here

这是我的电子表格的样本。脚本代码从第67行开始。

电子表格样本

只是不知道怎么做。

2
投票

答案:使用

使用 array.unshift() 在添加行之前,将所需的字符串添加到数组的开头。

更多信息。

根据MDN的文档,在数组的开头添加一个或多个元素,并返回数组的新长度。

unshift()方法在数组的开头添加一个或多个元素,并返回数组的新长度。

因此,在你将新行追加到第二张工作表之前,你需要使用 unshift() 添加字符串 "SOP" 到开头。

{
  // ...
  var lastRow = target.getLastRow();
  var lastCol = target.getLastColumn();
  values.unshift("SOP"); // << Add this
  target.appendRow(values); // Append new row  
  sheet.hideColumns(6,1);
  sheet.hideColumns(7,1);
}

希望对你有所帮助!

参考文献。

Array.prototype.unshift() - JavaScript