【发布时间】: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