herohoroブログ

自動デプロイを可能にしたGASを解読する



🔄   2023-03-14

セール期間にポチッと溜めしたUdemyのGAS講座。

今日01~37セッションまで視聴したところで

だいたい分かってきたので

astro-notion-blogの自動デプロイを可能にした

ぐださまの解説記事を全力で解読することにした。

🤗
今日は1日暇だったのよね〜〜〜〜ん ♪

deployRequest関数

image block

UrlFetchApp.fetch()

deployUrl、deployOptionsがなぜ必要なのかが気になった。

だから、

公式ドキュメントを見てみることにした。

image block
Google Workspace公式リファレンス

追加して設定したいことがあったら第2引数を使おうねってことが書いてある。

うむ。

納得 😎

でも、なぜ第2引数の内容はmethodとcontentTypeの2つなのか….

気になった。

だから青字 fetch(url, params)をクリックしてもっと詳しく確認!

image block
Google Workspace公式リファレンス

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#advanced-parameters

parameterにはいろいろあるが、

今日受講したGASの講座ではheadersの追加もされていて

「なぜ今回はheadersが不要なのか」

が引っかかりだした。

APIとWebhookは違う

ぐださまの解説記事をよく読んでみると

CloudflareはAPIではなくWebhookだということを理解。

image block

GASの講座でさっき習った!!

  • Webhook:リクエスト不要で特定の条件で発火する
  • API:リクエストがあってはじめてレスポンスする

これだ。

CloudeflareはWebhookだからリクエストに関するparameterはいらないってことか👀

image block
Google Workspace公式リファレンス

スッキリ\(^o^)/

doGet関数

JSONにNotionのデータをパースする前に

また発見!!

image block

UrlFetchApp.fetch(url, options);

変数:url

url の中身を遡ると

image block

NotionAPIのあれ。

image block

https://developers.notion.com/reference/post-database-query

変数:option

image block

白文字は変数。

丸裸にしよう。

変数:headers

image block

haederはNotionAPIに説明がある。

image block

https://developers.notion.com/reference/create-a-token

JSON.stringify(filter)の変数filter

image block

filter変数内のオブジェクトについてはNotionAPI公式リファレンスにある

  • filterオブジェクト
  • sortsオブジェクト

1つずつ確認!!

変数filter > filterオブジェクト

image block
Notion API 公式リファレンス

https://developers.notion.com/reference/post-database-query-filter

timestampについてはこれ

image block
Notion API 公式リファレンス

last_edited_timeを詳しく設定するにはdate filter conditionを参照したほうがよさそう。

image block
Notion API 公式リファレンス

https://developers.notion.com/reference/post-database-query-filter#date-filter-condition

last_edited_timeを設定している

on_or_after は...

image block
下へスクロールして発見

代入した日付を以降(その日も含む)を返す。

ここまでくるとGASのコードを忘れてくるので

もう一度確認!

image block

変数date以降の日付を表示するようにしているフィルターだということが分かった。

変数filter > filterオブジェクト > 変数date

image block

現在の時刻から60分さかのぼって変数dateを設定し直している。

変数filter > sortオブジェクト

image block

filterオブジェクトと似てる。

でも一応NotionAPI公式リファレンスを確認!

image block

https://developers.notion.com/reference/post-database-query-sort

timestampで古い順か新しい順かを設定するんだね!

まとめ

image block

現在時刻から60分さかのぼって

NotionDB内の編集歴があるのであれば

編集時刻が新しい順に並び替えて

JSONにする。

image block

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

その後、

文字列をJSONとして解析する。

image block

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

deployRequest関数を使って処理

image block

なるほどーーーーー\(^o^)/

おわりに

解説記事がTwitterで投稿されたとき、

すごいってことだけは分かった。

でも、実際にやってみて

もーどうにもならないくらい感動しちゃった。

一切迷いなく実装できた。

ビューティフォー\(^o^)/\(^o^)/

刺激されて今日はGASの講座を視聴して

楽しくなってきて

そのまま記事を書いてしまいました\(^o^)/

あーーーたのしい!!

Twitterでは更新のお知らせを随時行っています

興味ある方はLet'sフォロー★

▼ この記事に興味があったら同じタグから関連記事をのぞいてみてね

Buy Me A Coffee

新着記事を通知したい??


RSSリーダーにatomのリンクを登録すると通知が行くよ🐌

https://herohoro.com/atom

やってみてね(*´ω`*)(*´ω`*)

Twitter Timeline


フォロー大歓迎\(^o^)/