dポイントプレゼントキャンペーン実施中!

タイトルの関数を作りたいのですがどのように作れば良いのか分かりませんが。
GASについてほとんど分からないのでどなたか分かる方お教えください。

A 回答 (1件)

こんにちは



スプレッドシートはまったく存じませんけれど・・
ユーザー定義関数ってことで良いのでしょうか?

月と何週目かだけからでは計算できないので、年も必要になりますね。
返されるのが日にちだけなので、日にちの範囲は指定した月の範囲に限るものと解釈しました。
第7週などを与えても計算はできますが、指定月にはないので「#ERROR」として返します。

上記の仮定の下、こんな感じでできるのではないかと思います。
引数の指定は、( 年、月、週 ) の順になっています。

function calcWeek(y, m, n) {
if( isNaN(y + m + n) ) return "#ERROR";
y = y | 0, m = m - 1 | 0, n = n * 7;
const
sd = new Date( y, m, 1),
ld = new Date( y, m + 1 , 0),
d1 = new Date( y, m, n - 6 - sd.getDay()),
d2 = new Date( y, m, n - sd.getDay());
if(sd > d2 || ld < d1) return "#ERROR";
return `${(d1<sd?sd:d1).getDate()}日から${(d2>ld?ld:d2).getDate()}日`;
}
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!