gpt4 book ai didi

google-apps-script - 如何在 onEdit 触发器上执行 copyTo 后附加时间戳?

转载 作者:行者123 更新时间:2023-12-04 10:52:25 25 4
gpt4 key购买 nike

我正在使用 onEdit 函数来触发(除其他外)将单行(由两列组成)移动到新工作表(称为 CAC)的 copyTo。无关, 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()用作时间戳。所以日期作为日期对象放入单元格。如果要查看时间,请使用日期对象设置单元格的格式。

  • 引用:
  • offset(rowOffset, columnOffset, numRows)

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

    关于google-apps-script - 如何在 onEdit 触发器上执行 copyTo 后附加时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418686/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com