Google Script - Функция - Не определено
У меня есть следующий скрипт, который используется для распределения каждого месяца как 1/12 числа года и нахождения разницы между двумя датами. Например, функция суммирует январь-июнь как 50% года вместо 49% (181/365). Я хотел бы переместить свои Excel с / с в Google, но не могу заставить эту функцию работать в Google Script.
Сценарий Excel
Function PartMonths(x, y)
PartMonths = (DateDiff("M", (DateSerial(Year(x), Month(x) + 1, 1) - 1),
(DateSerial(Year(y), Month(y) + 1, 1) - 1) + 1) - 2 + Day(y) /
Day(DateSerial(Year(y), Month(y) + 1, 1) - 1) + (Day(DateSerial(Year(x),
Month(x) + 1, 1) - 1) - Day(x) + 1) / Day(DateSerial(Year(x), Month(x) + 1,
1) - 1)) / 12
End Function
Google Script
function PartMonths(x, y)
{ return PartMonths =(DateDif((Date(Year(x), Month(x) + 1, 1)),
(Date(Year(y), Month(y) + 1, 1) - 1) + 1,"M") - 1 + Day(y) /
Day(Date(Year(y), Month(y) + 1, 1) - 1) + (Day(Date(Year(x), Month(x) + 1,
1) - 1) - Day(x) + 1) / Day(Date(Year(x), Month(x) + 1, 1)-1))
}
x и y - даты, которые являются переменными. При отладке кода в Google Scripts он говорит: "ReferenceError: "DateDif"не определен"
Я не уверен, как это определить? Помогите!
1 ответ
Javascript сохраняет дату в миллисекундах с 01.01.1970
// fd final date JavaScript object date
// fi Initial date JavaScript object date
// Return date difference in fraction of day
function DateDif (fd,id){
var dayms=24*3600*1000;
return ( fd.valueof()-fi.valueof())/dayms;
}
Однако, если вы восстановите даты валютирования из gsheet или excel. Достаточно, если вы вернете fd-fi, поскольку excel кодирует в днях, а после точки - это доля дня
Для определения функции используйте
function DateDif(arg){
//Add here what should DateDif do
return something // something is the object reference to be returned by the function
// but you could use a literal like an integer, string or other
// primitives
}
Ссылка