スプレッドシート関数と同じ結果を得るカスタム関数を作成しようとしている場合は、数式をスプレッドシートに設定するために使用するのではなく、計算を実行する方法で Google Apps Script を使用する必要があります ( Sergeが指摘したように、許可されていないため機能しません)。
(また、将来の読者に明確にするために、Google Apps Script とそのカスタム関数は、Google スプレッドシートの式を使用して計算を実行できません。それらは JavaScript 言語で計算を実行します。一方、setFormulas を介したスクリプトを使用して、スプレッドシートを作成できます。数式をセルに入力すると、スプレッドシートの数式が計算を実行します...ただし、スクリプトがカスタム関数として使用されている場合 (つまり、= 記号を使用してセル内で呼び出されている場合)、これを行うことはできません。スクリプトは、メニュー項目やトリガー (スプレッドシートの編集やタイマーに応答するトリガーなど) などの別の手段から呼び出されます)。
したがって、JavaScriptをカスタム関数に記述して、週、日を計算できます。そのようなスクリプトは次のようになります。
function ageInWeeks(date) {
var mil = new Date() - new Date(date).getTime()
var seconds = (mil / 1000) | 0;
mil -= seconds * 1000;
var minutes = (seconds / 60) | 0;
seconds -= minutes * 60;
var hours = (minutes / 60) | 0;
minutes -= hours * 60;
var days = (hours / 24) | 0;
hours -= days * 24;
var weeks = (days / 7) | 0;
days -= weeks * 7;
return weeks +' wks, ' + days + ' days'
}
これは、次のように D19 を参照する場合、D19 以外の任意のセルのスプレッドシートに入れることができます。
=ageInWeeks(D19)
セル D19 には過去の日付が含まれています。
(カスタム関数は、元のスプレッドシートの数式よりも遅くなる可能性があることに注意してください)