Рассчитайте разницу в продолжительности между двумя отформатированными временными полями в Google App Scripts - PullRequest
0 голосов
/ 01 мая 2020

Я пытался получить длительность между 2 отформатированными столбцами времени (время начала и время окончания). Newb ie с помощью скриптов Google App. Пожалуйста, объясните мне, как этого добиться.

var a = e.source.getActiveSheet().getRange(row,7).getValue()
var b = e.source.getActiveSheet().getRange(row,8).getValue()
var c = (b-a).getTime();
e.source.getActiveSheet().getRange(row,9).setValue(c);

Here is an image attached for the google sheet

1 Ответ

1 голос
/ 04 мая 2020

Первое, что вам нужно знать, это то, как Sheets и Apps Script интерпретируют форматы даты. Google использует Unix time в своих продуктах, поэтому он начинается с 00:00:00 UTC on 1 January 1970. Не указание даты означает, что Sheets интерпретирует 09:00:00 как Sat Dec 30 17:09:21 GMT+00:09 1899.

В вашем случае это не будет иметь большого значения, поскольку вы выводите даты, но я рекомендую написать их как 30/05/2020 09:00:00, а затем go до Format > Number > Time.

Что касается скрипта приложений, getValues ​​ будет интерпретировать его как нечто похожее на Mon Dec 30 18:00:00 GMT+02:00 2020, что бесполезно. Используйте метод Date Javascript для форматирования его в объект Date. Затем вы можете использовать getTime, чтобы получить его в миллисекундах (все здесь работает в миллисекундах):

Как только вы получите оба значения времени в миллисекундах, вы можете работать с ними. Вы должны преобразовать их в часы (1 миллисекунда = 3,6e + 6 часов):

var a = e.source.getActiveSheet().getRange(row,7).getValue()
var b = e.source.getActiveSheet().getRange(row,8).getValue()

var a1 = new Date(a).getTime(); //Time in milliseconds
var b1 = new Date(b).getTime(); //Time in milliseconds

var hours = (b1 - a1) / 3.6e+6;

e.source.getActiveSheet().getRange(row,9).setValue(hours);

Это не будет хорошо работать в течение нескольких минут. 1 час и 30 минут составят 1,5 часа.


Решение функции:

Вместо скрипта Apps используйте формулы Sheets для его вычисления. Это так же просто, как установить, например, C1, =B1-A1;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...