Javascript 基于其他列计算Google电子表格中的日期列

Javascript 基于其他列计算Google电子表格中的日期列,javascript,google-sheets,Javascript,Google Sheets,我已经做了一个谷歌表格来处理我的药物 在A栏,我有一个我服用的药物的下拉列表。我最初服用药物的时间并不重要,但重要的是我何时服用下一粒药丸,并且每粒药丸的服用时间不同。一片,服用后,我需要在6小时后服用下一片,而另一片,我要在24小时后才服用。我每天都在不同的时间睡觉,所以我什么时候吃第一粒药丸取决于我什么时候醒来或者什么时候吃早餐等等。最重要的是我需要等6个小时才能再次服用。那是我的止痛药 到目前为止,我已经有了表格设置,这样我就有了药物的下拉列表,第2列输入了我服用避孕药的确切日期和时间。第

我已经做了一个谷歌表格来处理我的药物

在A栏,我有一个我服用的药物的下拉列表。我最初服用药物的时间并不重要,但重要的是我何时服用下一粒药丸,并且每粒药丸的服用时间不同。一片,服用后,我需要在6小时后服用下一片,而另一片,我要在24小时后才服用。我每天都在不同的时间睡觉,所以我什么时候吃第一粒药丸取决于我什么时候醒来或者什么时候吃早餐等等。最重要的是我需要等6个小时才能再次服用。那是我的止痛药

到目前为止,我已经有了表格设置,这样我就有了药物的下拉列表,第2列输入了我服用避孕药的确切日期和时间。第三栏,我有一个公式,第二栏加上6个小时,这对所有药物都不正确,所以我需要帮助。我知道这是可以做到的,但我不知道该问谁。如果我能得到它,那么第三栏将看到我选择了什么药物,然后取决于我需要服用下一种药物的时间。以下是我到目前为止所做的,但使用一个公式来增加6小时,这适用于所有人,这就是为什么公式不起作用:

工作表

Medication        Pill-taken-at        +6 hours
----------------------------------------------------------
Mycoxofloppin     2018-03-17 12:44     2018-03-17 18:44 
Maryjaneaspliff   2018-03-16 04:20     2018-03-16 10:20
function onEdit(e) {
  var timezone = "GMT-5";
  var timestamp_format = "yyyy-MM-dd   hh:mm";
  var ss = e.source.getActiveSheet();
  var start = 2;
  var end = 4;
  var row = e.range.getRow();
  if (e.range.getColumn() == 1){
    ss.getRange(row, start).setValue(new Date());
  }
}
脚本

Medication        Pill-taken-at        +6 hours
----------------------------------------------------------
Mycoxofloppin     2018-03-17 12:44     2018-03-17 18:44 
Maryjaneaspliff   2018-03-16 04:20     2018-03-16 10:20
function onEdit(e) {
  var timezone = "GMT-5";
  var timestamp_format = "yyyy-MM-dd   hh:mm";
  var ss = e.source.getActiveSheet();
  var start = 2;
  var end = 4;
  var row = e.range.getRow();
  if (e.range.getColumn() == 1){
    ss.getRange(row, start).setValue(new Date());
  }
}

Range::getValue
获取Google Sheets API中单元格的值。我假设您的单元格类型为
DateTime
,因此
getValue()
将为您提供一个JavaScript
Date
值,您可以轻松地对其执行日期计算

如果单元格输入正确,则无需担心时区或日期格式。(“键入”与“数据类型”相同,而不是“键盘键入”)

使用一张桌子:说

Y1: Pill Name Z1:(Interval(hrs)) Y2: Dumiliyuop Z2: 6 Y3: WhacyHittlir Z3:18
我知道这是一个有点离经叛道的问题,但是你能创建一个公开的谷歌电子表格并分享你上面问题中的链接吗?我相信会有人愿意帮助你(如果不是我自己)。@Gerik我同意。虽然这个问题不是正统的,但它提出了一个明确的问题和充分的研究。这是一本。用这个代码。函数onEdit(e){var timezone=“GMT-5”;var timestamp_format=“yyyy-MM-dd hh:MM”;var ss=e.source.getActiveSheet();var start=2;var end=4;var row=e.range.getRow();if(e.range.getColumn()==1){ss.getRange(row,start).setValue(new Date());}@I'-'谢谢你,我已经更正了答案,我添加了更多的错误检查和解释ofthnder@gmail.com我猜这是在使用Whadayathinking@gmail.com发布消息。我以为我已经注销了whadayathinking,但我想我没有。对不起,嗨,对不起,我没早点说。我试过了,但在第4行,文件“代码”***更新中出现错误-抱歉。我没有复制所有的代码;然而,在复制了所有代码后,我尝试将丁丙诺啡8 MG(我将其替换为您的名字)和MaryJanspliff放入数据验证字段,我没有得到任何时间戳或下一剂量的结果……如果您访问somps.imgur.com,您可以看到我正在查看的脚本页面的屏幕。我知道这对你来说可能是件简单的事,但当有人对此一无所知时,事情就不那么容易了。我在想我可以在所有var之前点击return,但我不知道这是否会把事情搞砸。很抱歉输入错误:P它似乎起作用了。C显示关于正确时间报警设置的注释。我会看看是否收到电子邮件。从表面上看,我很肯定我会收到电子邮件。我会研究这一点,并尽我最大的努力从中学习。谢谢你的帮助。你介意给我发一张代码的截图吗?这样我就可以试着正确地学习了?我很确定我粘贴它的方式,虽然它可以工作,但我可能没有使它看起来合适,我愿意学习如何最好地设置它。如果我所拥有的足够好,那么我就没事了。我会尽我最大的努力去熟悉它,我不得不做一个小小的修改。嘿,我调试过了!我知道,对你来说很简单,但至少我开始明白了。我必须换C2。药物和时间是用H:I而不是G:H表示的。我把所有的表都做得一样,所以当我为了学习而比较时,它们都是苹果对苹果的。前几张是H:I,所以我只是换了一张,看起来效果不错。我吃了两片药。起初,时间是6个小时,但在查看和捕捉之后,我修复了它,它自动修复了时间。它看起来不错!!!!!!谢谢你所做的一切。我会好好学习的!我收到电子邮件了!对