AppSheetには便利な関数がたくさん用意されています。if文のようにExcelやスプレッドシート(スプシ)などと同じ感覚で使えるものもあります。ですが、構文自体が違うものになっている場合もあります。
例えば、DATEやWEEKDAYなどです。よく使うSWITCHも違っていたりします。
ここでは、DATE, WEEKDAY, SWITCH関数がAppSheetとExcelやスプシでどう違っているか?置き換えるにはどうすればいいか?についてまとめています。
DATE
まずはDATE関数です。結論から言うと、スプレッドシートの場合は引数を「年」「月」「日」で3つとりますが、AppSheetでは1つの引数しかとりません。
スプレッドシートの場合
スプシの場合は以下のように使い「年」「月」「日」を指定することで、日付型にして返してくれます。指定する引数は3つです。
DATE(年, 月, 日)
例えば、DATE(2025, 5, 1)とすれば2024/5/1を返してくれます。
AppSheetの場合
AppSheetの場合は指定できる引数は1つで、日付型にして返します。
DATE("文字列")
DATE("月/日/年")
DATE(today())
DATE(now())
※月/日/年で指定します。(年/月/日ではありません)
※引数で指定した文字が時間型と認識されない場合は空白を返します(エラーになりません)
DATE("5/1/2025") → 5/1/2025
AppSheetへの変換
数値指定の場合
date(2025,2,1)
↓
date("2/1/2025")
もし、ビューの表示が2/1/2025となる場合はTEXT関数で成形します。
text(date("2/1/2025"),"YYYY/MM/DD")
カラム指定の場合
date(2025,2,1)
↓
これを「何月」というカラムと「何日」というカラムの値を用いて表す場合は、concatenate関数でつなげて1つの文字列にします。
date(concatenate([何月],"/",[何日],"/2025")))
もし、ビューの表示が2/1/2025のようになる場合はTEXT関数で成形します。
text(date(concatenate([何月],"/",[何日],"/2025"))),"YYYY/MM/DD")
カラムと数式で指定する場合
date(year(today()),2,1)
↓
これを「何月」というカラムと「何日」というカラムの値を用いて表す場合は、concatenate関数でつなげて1つの文字列にします。
date(concatenate([何月],"/",[何日],"/",year(today())))
もし、ビューの表示が2/1/2025のようになる場合はTEXT関数で成形します。
text(date(concatenate([何月],"/",[何日],"/",year(today()))),"YYYY/MM/DD")
(参考)
WEEKDAY
WEEKDAY関数は指定した日付に対する曜日を数値で返す関数です。
スプレッドシートでは引数を2つとることができます。2つ目はオプションで、始まりとなる曜日およびその数値を指定することができます。
一方、AppSheetでは引数は1つしかとれません。何曜日始まりかと開始の数値が固定されています。
スプレッドシートの場合
スプシの場合は第2引数まで指定することができます。
WEEKDAY(日付, [種類])
例えば、次のように2025/2/1(土)指定し、引数を2とした場合は、「6」を返します。(下の表をご参照ください)
WEEKDAY("2025/2/1", 2)
第2引数の指定による違い
第2引数の「種類」は1、2、3の整数を指定することができます。
表でまとめると以下のようになります。
第2引数の値が「1」の場合
日曜日から数え始めて日曜日の値を 1 とします。これはデフォルト値で、引数を省略したときと同じです。
WEEKDAY(日付)
WEEKDAY(日付, 1)
曜日 | 数値 |
---|---|
日曜日 | 1 |
月曜日 | 2 |
火曜日 | 3 |
水曜日 | 4 |
木曜日 | 5 |
金曜日 | 6 |
土曜日 | 7 |
第2引数の値が「2」の場合
月曜日から数え始めて月曜日の値を 1 とします。私たち日本人に一番なじみが深い形かと思います。
WEEKDAY(日付, 2)
曜日 | 数値 |
---|---|
月曜日 | 1 |
火曜日 | 2 |
水曜日 | 3 |
木曜日 | 4 |
金曜日 | 5 |
土曜日 | 6 |
日曜日 | 7 |
第2引数の値が「3」の場合
月曜日から数え初めて月曜日の値を 0 とします。
WEEKDAY(日付, 3)
曜日 | 数値 |
---|---|
月曜日 | 0 |
火曜日 | 1 |
水曜日 | 2 |
木曜日 | 3 |
金曜日 | 4 |
土曜日 | 5 |
日曜日 | 6 |
AppSheetの場合
AppSheetの場合は日付または日付形式の文字列を指定します。とれる引数は1つのみです。
WEEKDAY(日時)
WEEKDAY("月/日/年")
次のように使います。
WEEKDAY("5/1/2025")
WEEKDAY(TODAY())
2025/5/1は木曜日のため、WEEKDAY(“5/1/2025”)は「5」を返します。
※入力が無効な場合は0を返します。
スプレッドシートのデフォルト(第2引数に1を指定した場合)と同じで、日曜日から数え始めて日曜日の値を 1 とする値を返します。
曜日 | 数値 |
---|---|
日曜日 | 1 |
月曜日 | 2 |
火曜日 | 3 |
水曜日 | 4 |
木曜日 | 5 |
金曜日 | 6 |
土曜日 | 7 |
AppSheetへの変換
関数かつ引数なしは変換不要
スプレッドシートでweekday関数の値を関数でかつ引数なしで使っている場合は、そのままAppSheetで使っても問題ありません。
WEEKDAY(today())
↑↓ 同じ
WEEKDAY(today())
文字列は順序を入れ替える
文字列で指定している場合は、日付の順序を入れ替える必要があります。
WEEKDAY("2025/5/1")
↓ “M/D/YYY” または ”MM/DD/YYYY” にする
WEEKDAY("5/1/2025")
引数を指定している場合は数値を調整する
引数を指定している場合は数値を加算して、同じ出力になるように調整します。
WEEKDAY("2025/5/1",2)
↓
2025/5/1は木曜日です。引数を2にすると、月曜日から数え始めて月曜日の値を 1 となるため、算出結果は「4」になります。
AppSheetの場合は日曜日から数え始めて日曜日の値を 1 とするため、土曜日は「5」を返します。このため、「-1」して算出結果を調整します。
WEEKDAY("5/1/2025") - 1
SWITCH
SWITCH関数はIFS関数よりも文字数が少なくシンプルにかけるため、スプレッドシートでもAppSheetでも比較的よく使う関数です。
スプレッドシートのSWITCH関数は、設定したケースにどれも該当しなかった場合に表示するデフォルト値(既定値)の指定が任意です。ですが、AppSheetの場合は必須になります。
スプレッドシートの場合
スプレッドシートの場合、SWITCHの構文はセル番号で指定する場合か範囲で指定することができます。
セル指定の場合
SWITCH(セル番号, ケース1, 値1, [ケース2, 値2, ...], [既定値])
第1引数に判定対象となる式がきて、ケースと値のセットを記述していきます。一番最後の引数でどのケースにも該当しなかった場合に返す既定値を設定してもいいですし、しなくても問題ありません。
ただし、どのケースにも該当しないという状態を作ってはいけません。
※一致する値が見つからない場合はエラー「#N/A」になります。
※ケースは値で指定する必要があります。
例えば、R2の値に合わせて結果を変化させる場合(既定値なし)だと以下のようになります。
=switch(R2,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")
範囲(式)で指定する
範囲で指定する場合、結果はリスト形式になります(filter関数と同じです)
SWITCH(範囲, ケース1, 値1, [ケース2, 値2, ...], [既定値])
例えば、判定がAなら合格、Bは追試、それ以外は不合格とする場合は以下のように書きます。
=switch($J$4:$J$9,"A","合格","B","追試","不合格")
AppSheetの場合
AppSheetの場合、一番最後の引数に既定値(デフォルト)を記述することが必須になります。
SWITCH(式, ケース 1, 値 1, [ケース 2, 値 2 ...], 既定値)
式はスプレッドシートと同じく値もとれますが、カラムで指定することが一般的です。
SWITCH([カラム名], ケース 1, 値 1, [ケース 2, 値 2 ...], 既定値)
AppSheetへの変換
例えば、以下のような数式があるとします。
=switch(R2,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")
または、
=switch(R2:R10,"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-")
これをAppSheetに変換するには、式の部分をカラムにして、末尾にデフォルト値を加えます。
=switch([頻度],"毎月",U2&"日","隔週",Z2,"毎週",Z2,"毎日","-", "指定なし")