【问题标题】:How can you reverse the order of a splice?如何颠倒拼接的顺序?
【发布时间】:2020-05-21 23:39:35
【问题描述】:

我正在尝试在输入日期时从工作表中复制某些单元格,然后将它们粘贴到另一个工作表中。

以下是我的源工作表最后 4 列的图像。 onEdit 日期是 AC 列:

我想按该顺序复制列 B、I、AA、AC、AB 并将它们粘贴到我的目标工作表中。那是 AB 之前的 AC。您可以通过下图看到事件以 B、I、AA、AB、AC 的顺序粘贴到我的目标工作表中:

目标工作表有 A 到 K 列,但我只粘贴到 A 到 F 列中。

我已尝试颠倒脚本中的拼接顺序,但我无法让任何工作。我尝试反转源工作表中的列,但 AB 列是一个下拉列表,我不知道如何让 onEdit 触发器在下拉列表中工作。

这是我当前的脚本,没有相反的顺序:

// Copy and paste from Events/Incidents sheet to Internal Audit sheet
 function onEdit(e) {
   var spreadsheet = e.source;
  var sheet = range.getSheet();
  var sourcesheetname = "Events/Incidents"
  var range = e.range;
  var row = range.getRow();
  var column = range.getColumn();
  var editedColumn = range.getColumn();
  var editedRow = range.getRow();
  var column = 29;
  var date = range.getValue();
  if(Object.prototype.toString.call(date) === '[object Date]' && editedColumn == column && editedRow > 2 && sheet.getName() == sourcesheetname) {
  sheet.hideColumns(27,3);
  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(9, 17) //Remove Columns J to Z
  values.splice(2, 6); //Remove Columns C to H
  values.splice(0, 1); //Remove Column A
  var lastRow = getLastRow(target);
  var lastCol = target.getLastColumn();
  values.unshift("Event/Incident");
  target.getRange(lastRow + 1, 1, 1, values.length).setValues([values]);  // Modified
  if (lastRow >= 3) target.getRange(lastRow, 9, 1, 3).copyTo(target.getRange(lastRow + 1, 9, 1, 3), SpreadsheetApp.CopyPasteType.PASTE_FORMULA);  // Added  // Append new row  
  target.getRange(lastRow, values.length).offset(1, 0).activate();
  target.getRange(lastRow + 1, 1, 1, values.length + 2).setBorder(true, true, true, true, true, true, "white", SpreadsheetApp.BorderStyle.SOLID)
  }
 }

我想做的事,可能吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:
    • 您希望实现columns B, I, AA, AC, AB 的顺序,而不是B, I, AA, AB, ACvalues

    对于这个,这个修改怎么样?

    发件人:

    values.splice(9, 17) //Remove Columns J to Z
    values.splice(2, 6); //Remove Columns C to H
    values.splice(0, 1); //Remove Column A
    

    收件人:

    values.splice(9, 17) //Remove Columns J to Z
    values.splice(2, 6); //Remove Columns C to H
    values.splice(0, 1); //Remove Column A
    values = [...values.slice(0, 3), values[4], values[3]];  // <--- Added
    
    • values.splice(0, 1),订单为B, I, AA, AB, AC。所以我想建议通过添加[...values.slice(0, 3), values[4], values[3]]来实现你的目标。

    【讨论】:

    • @McChief 感谢您的回复和测试。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多