0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

検温のフォームと見るシートを作った話 - Query関数を初めて使いました -

Last updated at Posted at 2020-08-06

つくったもの

image.png
image.png

はじめに

これは、GASにかまけて、表計算の関数やらQUERY関数やら使ってこなかったプログラミング初心者が、3タブくらい開きながら作ったモノになります。

コンセプトは「簡単に作る」です。

動作環境

googleフォーム、googleスプレッドシート。

つくりかた

フォームを作る。

名前と日にちと体温の項目を設定する。
image.png
image.png
image.png
検温対象の母数が多ければ、名前ではなくメールアドレスを記入してもらったり、
フォームを開く際にログインする設定にして、googleアカウントで識別してもよい。

また、日にちはフォーム送信時のタイムスタンプから取得してもよい。
今回は、結果の信頼性より、結果が歯抜けになることや、送信忘れ等の対応を嫌ったために、
日にちを記入してもらっています。

スプレッドシートの作成。

フォームの回答のスプレッドシートを作成。
image.png
作成したスプレッドシートを開き、新しいタブを作成。
縦軸に日付、横軸に名前を設定する。
image.png

関数を設定する。

結果だけ知りたい人は、最後までとばしてください。

別タブのセルを参照する。

='<タブの名前>!<セルの座標>'

image.png

Query関数を使用する。

関数リファレンス
のサンプルコードから真似てみる。

とりあえず全部取得してみる。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select *")

image.png

5つの回答のデータ全てが取得出来たが、複数行と列に渡って出力されている。

Query関数の出力範囲を限定する。

googleのQueryのリファレンス
から、LIMIT句が使えるっぽいので、これで出力を1行に絞る。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select * limit 1")

image.png

更に、QueryでD列を指定して、体温の列だけ取得する。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select D limit 1")

image.png

これで、何があっても出力が1セルに収まる。

WHERE句を使う。

まず、名前が「Alpha」であるものだけを取得する。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select D where (B='Alpha') limit 1")

image.png

これだと使い勝手が悪いので、
各列1行目にある名前と一致するものを取得する。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select D where (B='"&B$1&"') limit 1")

image.png
「&」は、たいていの言語における「+」。

次に、日付が一致するものを取得する。

日付の一致は、文字列の一致とは異なり、date'YYYY-MM-DD'の形式に沿う必要がある。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select D where (B='"&B$1&"' and C=date'2020-08-01') limit 1")

image.png
標準の日付の形式である「YYYY/MM/DD」から「YYYY-MM-DD」に変換するために、text関数を用いる。

=QUERY('フォームの回答 1'!$A$2:$D$100,"select D where (B='"&B$1&"' and C=date'"&text($A2,"YYYY-MM-DD")&"') limit 1")

image.png

N/Aを出力しないようにする。

ifna関数で全体を囲う。

=IFNA(QUERY('フォームの回答 1'!$A$2:$D$100,"select D where (B='"&B$1&"' and C=date'"&text($A2,"YYYY-MM-DD")&"') limit 1"),"")

この関数を全部のセルにオートフィルで適用すると完成。
image.png

さいごに

Query関数便利ですね。GASを使うか関数を使うか、上手く判断できるようになりたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?