我正在使用onEdit函数来触发(其中包括)一个copyTo,它将单行(由两列组成)移动到新工作表(称为CAC)。无关的,onEdit触发器还将时间戳添加到其他工作表。我不知道如何在copyTo登陆位置右侧的列中向CAC工作表添加另一个时间戳。我假设它是偏移量和在copyTo内嵌套内容的组合,但是经过一段时间的尝试,无法弄清楚!谢谢!
function onEdit(e) {
// DUE TODAY
{
e.source.toast('Processing...');
var sh=e.range.getSheet();
var name=sh.getName();
if(name=='Posting Tasks' && e.range.columnStart==1 && e.value) {
e.source.toast('Processing...');
var id=e.range.offset(0,2).getValue();
var tsh=e.source.getSheetByName('Database');
var idA=tsh.getRange(3,2,tsh.getLastRow()-2,1).getValues().map(function(r){return r[0]});
var row=idA.indexOf(id)+3;
var tsh=e.source.getSheetByName('Database').getRange(row,11).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy"));
}
// Copy to CAC
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet()
if(ss.getActiveSheet() === 'Posting Tasks'){
//Get active cell
var cell = sheet.getActiveCell();
var cellCol = cell.getColumn();
var cellRow = cell.getRow();
var exportRange = sheet.getRange(cellRow,2,1,6);
//Select the paste destination
var pasteDestination = ss.getSheetByName('CAC');
var pasteEmptyBottomRow = pasteDestination.getLastRow() + 1;
//Copy the row to the new destination
exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,3),
SpreadsheetApp.CopyPasteType.PASTE_VALUES);
// add timestamp
}
exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,3), SpreadsheetApp.CopyPasteType.PASTE_VALUES)
复制的值的列的右列。如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个可能的答案之一。
在此修改中,我使用了offset()
。
修改脚本后,将如下所示。
从:exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,3),
SpreadsheetApp.CopyPasteType.PASTE_VALUES);
至:var timestamp = new Date();
var destRange = pasteDestination.getRange(pasteEmptyBottomRow,3);
exportRange.copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES);
destRange.offset(0, exportRange.getNumColumns() - 1, exportRange.getNumRows()).setValue(timestamp);
destRange.offset(0, exportRange.getNumColumns() - 1, exportRange.getNumRows()).setValue(timestamp);
修改为destRange.offset(0, exportRange.getNumColumns() - 1).setValue(timestamp);
。new Date()
用作时间戳。因此,将日期作为单元格的日期对象。如果要查看时间,请使用日期对象设置单元格的格式。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。