
[GAS] NotionAPIを使って、作成した日報ページの内容を取得しChatworkでメッセージを送信する1
はじめに
前回、GASで、NotionAPI を使用して、日報ページを新規で作成する処理を実装しました。
GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する、という処理を実装します。
今回は、その処理の概要と、Notionのページ構成の基礎知識についてまとめていきます。
処理概要
Notionの日報ページに記載されている作業内容と、Googleスプレッドシート上の出退勤の時間情報を合わせて、「今日の日報報告」としてChatworkにメッセージを送信します。
Googleスプレッドシートの出社、退社の情報は、下記の構成で記録しています。

Notionの日報ページでは、作業内容を下記の構成で記載しています。

ページコンテンツ(Page content)の中で、箇条書きリスト(bulleted list)部分に記載されている、作業内容の記述を取得します。
日報としてメッセージを送信する内容は、Googleスプレッドシート内にひな形のシートを準備しておきます。
その日の勤務時間は、月ごとに作成される出社、退社の時間のシートから、今日の情報を取得できるよう、関数を設定しています。
業務内容は、Notionの日報ページより、取得してくるように実装します。

Notionのページオブジェクト
前回の記事で、Notionの新規ページを作成した際、HTTPリクエストの結果として、作成したページのページオブジェクトが格納されていたことをご紹介しました。

ページオブジェクトの詳細は、下記に記載されています。
今回の処理では、HTTPリクエストの結果のページオブジェクトよりページIDを取得し、そのページIDを指定してページ内の要素を取得する、という処理を行います。
なお、このIDは、UUIDの形式となっています。
例)xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
NotionAPIにて、ページID、オブジェクトIDを指定する場合、HTTPリクエストの結果のオブジェクトより取得したID「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」のハイフンを削除したものを指定することとなります。
Notionページのページコンテンツ(Page Content)
Notionのページ内は、ヘッダ部分のページプロパティ(Page properties)とページコンテンツ(Page content)の2つの要素でできています。

このページの例だと、ページコンテンツ(Page content)部分は、下記のように3つの要素(Block)に分かれています。

②は、箇条書きリストがネストしています。
この場合、「請求書処理」のテキストを持つブロックのpropertyであるhas_childrenは、Trueとなっています。
つまり、「請求書処理」のテキストを持つブロックが親要素となり、「作成、送付」のテキストを持つブロックが子要素という構成になります。

まとめ
今回は、GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する処理の概要と、Notionのページの基礎知識について、まとめました。
次回は、Notionの日報ページから作業内容を取得する処理の実装について、ご紹介していきます。