根据第一列的访问权限更新第二列

时间:2012-11-11 19:53:32

标签: google-apps-script

我需要输入当前日期和时间我的Google文档电子表格的第K列中的时间(基于单个行),如果列I或J中的任何一个更改。这是我第一次尝试使用谷歌脚本。

我找到了一个能够做时间的功能(我希望我能弄清楚如何做日期),但我不知道如何检查单元格的变化,并更新其他单元格。因此,例如,如果行10列I或J改变,则行10列K应当获得当前日期&时间。

function myFunction() {
  var d = new Date();
  var timeStamp = d.getTime();  // Number of ms since Jan 1, 1970

  // OR:

  var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
}

1 个答案:

答案 0 :(得分:0)

你可以试一试 - 它使用字符串格式将当前日期设置为正确的格式(你可以根据需要进行调整)。需要注意的一件重要事项是:无论您在此处执行什么操作,都将根据您在电子表格中指定的格式显示该值。因此,如果您不执行任何操作,结果将看起来像传统的日期时间表示。如果您希望它以您指定的格式显示,您可以执行以下两项操作:1。)使用电子表格的格式菜单将整个列转换为文本;或2.)(我的选择)使用'为您编写的值加前缀,这实际上将其转换为字符串(这是在下面的代码中完成的)。希望这会有所帮助。

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  // This was "MySheet" for me - change to whichever sheet you want to test
  if( s.getName() == "MySheet" ) {
    var r = s.getActiveCell();
    // Check if the column is either I or J
    var currColumn = r.getColumn();
    if( currColumn == 9 || currColumn == 10) {
      // If so, set dateCell = the current row at column J
      var dateCell = s.getRange(r.getRow(), 11);
      // Format the current date into datetime format (adjust to display how you want)
      var dateTime = Utilities.formatDate(new Date(), "GMT-8", "MMM-dd-yyyy h:mm a");
      // Set the cell
      dateCell.setValue("'" + dateTime);
    }
  }
};