Google Spreadsheet Makro-将一个时间值添加到另一个

多米尼克·伦伯格
var valueDate = Utilities.formatDate(sheet.getRange("D2").getValue(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd/MM/YYYY hh:mm:ss");

var valueResetCD = Utilities.formatDate(sheet.getRange("C2").getValue(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "hh:mm:ss");

这是我目前拥有的2行-由于Spreadsheet时区可能与makro时区不同,因此我被告知始终从工作表中获取时区。

在这2个值中,我保留了正确的值(试图将它们打印到字段中)

第一个是19/09/2020 22:34:52(特定日期),第二个是03:00:00.000(3小时)

现在,我要做的就是将这2次加在一起,这样我就可以得到输出: 20/09/2020 01:34:52

我尝试过:sheet.getRange("Data!$A$21").setValue(valueDate + valueResetCD)但是我想这并不是那么容易-它只是将时间的2个字符串值复制到一行中。

如何将这两个“时间/日期”值彼此相加,从而得到上面的输出

Tanaike

我相信您的情况和目标如下。

  • 根据您的情况,作为样本值,
    • valueDate19/09/2020 22:34:52从检索sheet.getRange("D2").getValue()
    • valueResetCD03:00:00.000从检索sheet.getRange("C2").getValue()
    • 这两个值都是日期对象。
  • 您要添加valueResetCDvalueDate
    • 使用样本值时,您希望将其20/09/2020 01:34:52作为结果值。

修改要点:

  • 在这种情况下,我认为这valueDate是正确的日期时间,就像19/09/2020 22:34:52日期对象一样。
  • 但是,我认为valueResetCD1899/12/30 03:00:00因为电子表格使用序列号。
    • 在这种情况下,需要将序列号转换为unix时间。
    • 并且,在这种情况下,需要考虑时间差。
  • 通过将日期对象转换为Unix时间来添加这两个值。并且,将结果值转换为日期对象。

当以上几点反映到Google Apps脚本中时,它如下所示。

修改后的脚本:

function myFunction() {
  var sheetName = "Sheet1";  // Please set the sheet name.
  
  // 1. Retrieve values from the cells as the date object.
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var valueDate = sheet.getRange("D2").getValue();  // As a sample value, it's `19/09/2020 22:34:52`.
  var valueResetCD = sheet.getRange("C2").getValue();  // As a sample value, it's `03:00:00.000`.

  // 2. Convert the date object to the unix time.
  var valueDateUnix = valueDate.getTime();
  
  var differenceBetweenSerialAndUnix = new Date("1970/01/01 00:00:00").getTime() - new Date("1899/12/30 00:00:00").getTime();
  var timeDifference = (new Date().getTimezoneOffset()) * 60 * 1000;
  var valueResetCDUnix = valueResetCD.getTime() + differenceBetweenSerialAndUnix - timeDifference;
  
  // 3. Add both time and convert it to the date object.
  var resultDateObject = new Date(valueDateUnix + valueResetCDUnix);
  var resultString = Utilities.formatDate(resultDateObject, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd/MM/YYYY hh:mm:ss");
  console.log(resultDateObject)
  console.log(resultString)  // You can see "20/09/2020 01:34:52" at the log.
  
  // 4. Put the value to the cell.
  sheet.getRange("A1").setValue(resultDateObject);
}

注意:

  • 在此答案中,它假定来自单元格“ C2”和“ D2”的值是日期对象。如果这些值是不是日期对象的字符串,则不能使用上述脚本。所以请注意这一点。

参考文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用AppScript加快将过滤后的数据集从一个Google Spreadsheet传输到另一个Google Spreadsheet的速度

来自分类Dev

如何使用Google Spreadsheet查询对另一个工作表中的行求和

来自分类Dev

Google Spreadsheet,找到前一个工作日

来自分类Dev

Google Spreadsheet,找到前一个工作日

来自分类Dev

Google Spreadsheet-根据不同单元格中的文本,更改另一个单元格文本

来自分类Dev

Google Spreadsheet-仅在另一个单元格论坛中使用否定单元格

来自分类Dev

Google SpreadSheet查询-将查询结果合并为一个

来自分类Dev

Google脚本:将列中的新值附加到另一个工作表

来自分类Dev

如何链接两列,以便其中的一个编辑反映在Google Spreadsheet中的另一列中

来自分类Dev

在 Google App Engine 中使用 JavaScript 将可下载文件添加到另一个页面

来自分类Dev

Google Spreadsheet函数用于多个变量,给出一个结果

来自分类Dev

如何使用Google Spreadsheet中的公式垂直重复一个范围

来自分类Dev

Google Spreadsheet。从ImportData-result中仅检索一个单元格

来自分类Dev

Google Spreadsheet中的两个IF语句

来自分类Dev

将时间跨度添加到另一个时间跨度不起作用

来自分类Dev

Google Spreadsheet&ArrayFormula-自动添加公式

来自分类Dev

在Android中获取Google Spreadsheet单元值

来自分类Dev

将Google Spreadsheet作为JSON时出错

来自分类Dev

如何将数组写入Google Spreadsheet?

来自分类Dev

自动将Google Spreadsheet导出到Excel

来自分类Dev

当用户向特定工作表添加新行时,它会自动将相同的行添加到另一个 Google 工作表

来自分类Dev

如何在Google SpreadSheet中为列中的每一行创建一个公式?

来自分类Dev

尝试在PHP中将一行附加到Google Spreadsheet

来自分类Dev

有没有一种方法可以构建具有多个下拉菜单的Google Spreadsheet,以从另一个电子表格返回数据?

来自分类Dev

如何将一个Google文档复制到另一个

来自分类Dev

将大文件从一个 Google 帐户移动到另一个?

来自分类Dev

根据多个列计算Google Spreadsheet中的唯一值

来自分类Dev

Google Spreadsheet从两个不同的工作表中获取唯一值

来自分类Dev

Google Spreadsheet从两个不同的工作表中获取唯一值

Related 相关文章

  1. 1

    如何使用AppScript加快将过滤后的数据集从一个Google Spreadsheet传输到另一个Google Spreadsheet的速度

  2. 2

    如何使用Google Spreadsheet查询对另一个工作表中的行求和

  3. 3

    Google Spreadsheet,找到前一个工作日

  4. 4

    Google Spreadsheet,找到前一个工作日

  5. 5

    Google Spreadsheet-根据不同单元格中的文本,更改另一个单元格文本

  6. 6

    Google Spreadsheet-仅在另一个单元格论坛中使用否定单元格

  7. 7

    Google SpreadSheet查询-将查询结果合并为一个

  8. 8

    Google脚本:将列中的新值附加到另一个工作表

  9. 9

    如何链接两列,以便其中的一个编辑反映在Google Spreadsheet中的另一列中

  10. 10

    在 Google App Engine 中使用 JavaScript 将可下载文件添加到另一个页面

  11. 11

    Google Spreadsheet函数用于多个变量,给出一个结果

  12. 12

    如何使用Google Spreadsheet中的公式垂直重复一个范围

  13. 13

    Google Spreadsheet。从ImportData-result中仅检索一个单元格

  14. 14

    Google Spreadsheet中的两个IF语句

  15. 15

    将时间跨度添加到另一个时间跨度不起作用

  16. 16

    Google Spreadsheet&ArrayFormula-自动添加公式

  17. 17

    在Android中获取Google Spreadsheet单元值

  18. 18

    将Google Spreadsheet作为JSON时出错

  19. 19

    如何将数组写入Google Spreadsheet?

  20. 20

    自动将Google Spreadsheet导出到Excel

  21. 21

    当用户向特定工作表添加新行时,它会自动将相同的行添加到另一个 Google 工作表

  22. 22

    如何在Google SpreadSheet中为列中的每一行创建一个公式?

  23. 23

    尝试在PHP中将一行附加到Google Spreadsheet

  24. 24

    有没有一种方法可以构建具有多个下拉菜单的Google Spreadsheet,以从另一个电子表格返回数据?

  25. 25

    如何将一个Google文档复制到另一个

  26. 26

    将大文件从一个 Google 帐户移动到另一个?

  27. 27

    根据多个列计算Google Spreadsheet中的唯一值

  28. 28

    Google Spreadsheet从两个不同的工作表中获取唯一值

  29. 29

    Google Spreadsheet从两个不同的工作表中获取唯一值

热门标签

归档