在onEdit触发器上执行copyTo之后如何附加时间戳?

问题描述 投票:1回答:1

我正在使用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

  }   


google-apps-script google-sheets triggers google-apps
1个回答
0
投票
  • 您想将时间戳记放在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()用作时间戳。因此,将日期作为单元格的日期对象。如果要查看时间,请使用日期对象设置单元格的格式。

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.