Google apps script 基于第一列的访问更新第二列

Google apps script 基于第一列的访问更新第二列,google-apps-script,Google Apps Script,如果第I列或第J列发生变化,我需要将当前日期和时间(以单行为基础)放在我的google docs电子表格的K列中。这是我第一次尝试使用谷歌脚本 我找到了一个可以计算时间的函数(我希望我能找出如何计算日期),但我不知道如何检查单元格中的更改,以及如何更新其他单元格。例如,如果第10行第I列或第J列发生变化,第10行第K列应该得到当前的日期和时间 function myFunction() { var d = new Date(); var timeStamp = d.getTime();

如果第I列或第J列发生变化,我需要将当前日期和时间(以单行为基础)放在我的google docs电子表格的K列中。这是我第一次尝试使用谷歌脚本

我找到了一个可以计算时间的函数(我希望我能找出如何计算日期),但我不知道如何检查单元格中的更改,以及如何更新其他单元格。例如,如果第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.)使用电子表格的格式菜单将整个列转换为文本;(我的选择)在你写的值前面加一个
,这将把它转换成一个字符串(这就是下面代码中所做的)。希望这有帮助

函数onEdit(){
var s=SpreadsheetApp.getActiveSheet();
//这是我的“我的工作表”——换成你想测试的工作表
如果(s.getName()=“MySheet”){
var r=s.getActiveCell();
//检查列是否为I或J
var currColumn=r.getColumn();
如果(currColumn==9 | | currColumn==10){
//如果是,则设置dateCell=第J列的当前行
var dateCell=s.getRange(r.getRow(),11);
//将当前日期格式化为日期时间格式(调整以显示所需方式)
var dateTime=Utilities.formatDate(新日期(),“GMT-8”,“mm dd yyyy h:mm a”);
//设置单元格
dateCell.setValue(“'”+dateTime);
}
}
};

将我的答案更新为使用
GMT-8
。让我知道它是否适合你。是的,我能找到一本“手册”。现在我的日期字符串是这样的:@AB你是如何寻找你的日期字符串出现的?是的,我找到了一本“手册”。现在我的日期字符串如下所示:var dateTime=Utilities.formatDate(new date(),“GMT-8”,“MMM dd yyy h:m TT”);我用的是MMM,它应该是-month name,缩写,但不起作用,我用的是TT,它应该是AM/PM,但不起作用(续),我用的是h:m,它应该给我一位数的小时和分钟,我得到1位数,除了秒总是双零而不是空。还有其他想法吗?感谢you@AB更新了答案。基本问题与电子表格本身显示数字的格式有关。我所知道的最简单的解决方法是在新的日期字符串前面加一个撇号,这将把它当作字符串处理,从而防止电子表格试图以特定的方式格式化日期时间值。希望这有帮助。