У меня есть следующий сценарий, который используется для распределения каждого месяца как 1/12 года и определения разницы между двумя датами. Например, функция суммирует с января по июнь как 50% года вместо 49% (181/365). Я хотел бы перенести свой excel s / s в 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
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 »не определено».
Я не знаю, как это определить? Помощь!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы определить функцию, используйте
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
}
Справка
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 кодирует в днях, а после точки - это доля дня
Ах хорошо. Я новичок в этом и мало использовал Google Script. Я посмотрю на сайты, которые вы порекомендовали. Спасибо.