Javascript 设置Google sheets脚本中活动单元格的值

Javascript 设置Google sheets脚本中活动单元格的值,javascript,google-sheets,google-drive-api,google-spreadsheet-api,Javascript,Google Sheets,Google Drive Api,Google Spreadsheet Api,我想创建一个公式,在某个单元格更改上创建时间戳。下面的代码就可以了。我现在想做的是通过将公式转换为纯文本将时间戳锚定到工作表 如果要手动执行,则需要选择时间戳,复制它们并将它们粘贴为值 我不想手动执行,所以我创建了下面的脚本。它试图覆盖当前活动单元格。有人知道如何让它工作吗 谢谢 function cvTimestamp(value) { var timezone = "GMT+1"; var timestamp_format = "dd-MM-yyyy HH:mm:ss"; // Ti

我想创建一个公式,在某个单元格更改上创建时间戳。下面的代码就可以了。我现在想做的是通过将公式转换为纯文本将时间戳锚定到工作表

如果要手动执行,则需要选择时间戳,复制它们并将它们粘贴为值

我不想手动执行,所以我创建了下面的脚本。它试图覆盖当前活动单元格。有人知道如何让它工作吗

谢谢

function cvTimestamp(value) {
  var timezone = "GMT+1";
  var timestamp_format = "dd-MM-yyyy HH:mm:ss"; // Timestamp Format. 


  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];


  var date = Utilities.formatDate(new Date(), timezone, timestamp_format);

  return date

  // Returns the active cell
  var cell = sheet.getActiveCell();
  // try to write date to the active cell as a value.
  cell.setValue(date);

}

下面的脚本怎么样?当函数名为“onEdit()”时,将执行此操作。电子表格的编辑单元更改为“日期”


这并不像预期的那样有效,因为它在我试图编辑的每个单元格中都放置了一个时间戳。我可以尝试编辑它以检查e是否在我要写入的同一行中。如果是这样,则更新特定列中该行的te timestamp。(我不知道如何检查)除非有人有一个更简单的解决方案。活动单元格可以通过“e.range”检索。如果要自动编辑其他单元格,可以基于活动单元格获取单元格位置。例如,如果编辑“a1”单元并希望更改“b2”单元,“e.range”具有“a1”位置。因此,使用“offset()”可以将“date”写入所需的单元格。我更新了示例脚本。请检查它。这是可行的,但我开始使用普通公式的原因是,我可以很容易地选择定义时间戳的字段。现在,每次我添加一个新字段时,我都要编辑脚本代码。很抱歉,我的英语水平很差。请检查我刚才更新的示例脚本。编辑各种单元格时,时间戳的列位置被锁定。在示例中,时间戳显示在D列。如果我误解了您想要做什么,请告诉我。我想再次修改。自定义函数从输入值向同一单元格输出一个值。因此,它不能将值从自定义函数单元格放到其他单元格中。虽然使用多维数组时,值可以放在其他单元格中,但不能覆盖到现有值。因此,当您想将日期从自定义函数的单元格放到另一个单元格时,我想到了使用范围有限的onEdit()。请检查已更新的示例脚本。您可能希望在此使用的方法尝试建议的解决方案,以设置特定集合的值。
function onEdit(e){
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if (row == 3 && col == 3){ // You can freely define the range for putting DATE. 
    var timezone = "GMT+1";
    var timestamp_format = "dd-MM-yyyy HH:mm:ss";
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
    var col = 5; // If you want to put a value to colmun 'E' of editing cell, col is 5.
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    ss.getRange(e.range.getRow(), col).setValue(date);
  }
}