【GAS】スプレッドシートにGmailからスクレイピング~スプレッドシートの用意~【第6回】

2022/08/08

前回は、Gmailから抜き出したいデータを抽出しました。今回は、データを書き込むスプレッドシートを用意したいと思います。

目次

今回やること

今回は、データを書き込むスプレッドシートを用意します。

  • 日付の列を作る
  • 連続記録を作る
  • 各データを入れる列を作る
  • 分・秒で記録するものは入力用の列を作る
  • 各データに平均値・中央値・最良値・最低値を抽出する場所を作る
  • 別シートに「川島教授の脳の小話」を記録する列を作る
  • 関数を準備しておく
  • メールのない区間のデータ入力
  • 交互の背景色を設定しておく

平均値 (AVERAGE)・中央値 (MEDIAN)

平均値はAVERAGE関数を使います。かっこ内には区間を指定します。

=AVERAGE(C7:C1000)

中央値はMEDIAN関数を使います。かっこ内には区間を指定します。

=MEDIAN(C7:C1000)

MAX・MIN

最高値と最低値を表示する関数です。かっこ内には区間を指定します。最良記録・最低記録どちらにもなり得るので、注意して使います。

=MAX(C7:C1000)

=MIN(C7:C1000)

連続記録

連続して脳トレをした記録を数えます。

A8が今回の日付、A7が前回の日付なので、前回の日付+1が今回の日付と同じなら、+1した値にして、そうじゃなかった場合はカウントリセット(1に)します。

=IF(A8=(A7+1),C7+1,1)

分秒の表記

記録が分秒で記録するところは入力用の列を作っています。そのまま入力すると、文字列として扱われるからです。時間として扱わせるために、表示用の列には関数を入れています。

I19は「2:51.90」を入力しているセルです。

=IF(ISNUMBER(I19),IF(I19>1,IFERROR((“00:00:"&I19)*1),I19),IFERROR((“00:"&I19)*1))

ISNUMBER

これは、まずI19にISNUMBERをすることで、値が数値かどうかを判別しています。数値だったら、IF(I19>1,IFERROR((“00:00:"&I19)*1),I19)をします。数値ではなかったらIFERROR((“00:"&I19)*1)をします。

I19が数値だった場合、IF(I19>1,IFERROR((“00:00:"&I19)*1),I19)となります。これは、もしI19が1より大きい場合に、IFERROR((“00:00:"&I19)*1)とし、1より小さい場合はそのままI19を返します。

IFERROR

I19が1より大きい場合のIFERROR((“00:00:"&I19)*1)ですが、エラー値でない場合は1番目の引数を返す関数です。エラー値の場合で2番目を指定していない場合は空白が返されます。よって、空白か「00:00:I19」という値が返されます。

実際の動き

まずは、I19の「2:51.90」を当てはめて考えると、まず数値ではなく文字列なので、IFERROR((“00:"&I19)*1)が適用されます。IFERRORをすると、「00:2:51.90」となり、スプレッドシートで扱える時間の型に合うので時間として扱ってくれるようになります。

また、別のセルのK24についても考えてみます。こちらは「36.77」、36秒77です。これだと数値として扱われるので、IF(I19>1,IFERROR((“00:00:"&I19)*1),I19)こちらの式が適用されます。今回の数値は1より大きいので、「IFERROR((“00:00:"&I19)*1)」が適用され、「00:00:36.77」となりこちらも時間として扱えるようになります。

スプレッドシート

クリックで拡大

全体はこんな感じになりました。分秒の入力用の列は、非表示にしておくと見やすくなります。

最後に

今回は、スプレッドシートを作りました。次回はスプレッドシートに書き込みをしていきたいと思います。