
MacroDroidでGmailを受信してずんだもんが読み上げるマクロを作ってみた
配布
2023-12-02
・マクロ本体
・マクロのスクリーンショット
導入方法(30分~)
Googleアカウントは鉄壁のガードで守られているため、メールを一つ見るだけにしてもかなり面倒な準備をしなければなりません。
そして以下の手順は、かの鉄壁に勝手口を開け、機密情報を抜き出した挙げ句ずんだもんが叫ぶという暴挙への道筋にほかならないため十分な注意が必要です。
この手順がセキュリティ的にOKか聞きたいというのが、この記事を公開する目的だったりします。
1. GCPでプロジェクトを作成する
いきなりMacroDroidから離れますが、このマクロで利用するGmail APIを有効化するためにGoogle Cloud Platform(GCP)というサービスで準備していきます。
上記サイトを参考してみました。
プロジェクトIDはユニークな値なので公開しない方がいいかもです(自戒)
作成できたら、「プロジェクトを選択」をクリックしてプロジェクトのダッシュボードへ進みましょう。
2. Gmail APIを有効化する
今度はこちらの記事を参考にして、Gmail APIを有効化します。
3. OAuth同意画面を構成する
「認証情報を作成」をクリックし、認証情報の種類を選択していきます。



「スコープ」は、OAuthで認証したアプリに与える権限を指定するものです。
今回はGmailを受信するのに最低限必要な「~/auth/gmail.readonly」だけを選択し、追加します。

次はクライアントIDを設定していきます。
・「アプリケーションの種類」には「ウェブ アプリケーション」を選択。
・「承認済みのJavaScript生成元」は空でも動きました。
・「承認済みのリダイレクトURI」は「https://www.example.com」をそのまま設定してみました。

「完了」をクリックすると…!元の画面に戻ります。

4. 本番環境にpushする(任意)
左のメニューから「OAuth consent screen」に移動し、「アプリを公開」をクリックして本番環境にpushします。

この操作は任意ですが、行わない場合は7日経過するとマクロが動作しなくなります。
5. 認証情報を集める
左のメニューから「認証情報」→「OAuth2.0 クライアントID」に移動します。

「クライアントID」「クライアントシークレット」「承認済みのリダイレクトURI」が表示されるので、それぞれメモしておきましょう。
6. 認可コードを取得する
以下のURLに先程集めた情報を入力してアクセスします。
https://accounts.google.com/o/oauth2/v2/auth?response_type=code
&client_id=[クライアントID]
&redirect_uri=[承認済みのリダイレクトURI]
&scope=https://www.googleapis.com/auth/gmail.readonly
&access_type=offline
&approval_prompt=force
すると見慣れたアカウント選択画面の後、Googleに承認されていないことを警告する画面が表示されるので「詳細」→「安全ではないページに移動」と進めます。

ページがリダイレクトすると、ブラウザのURL欄にcode=から始まる「認可code」が入るので忘れずにメモします。この記事を参考にしました。
https://community.dal.co.jp/s/article/send-and-receive-gmail01
7. MacroDroidの変数を埋める
ようやくMacroDroidの操作に入ります。

【初期設定】と書かれた変数を、先程のメモを参照しながら全て埋めていきます。
「メール検索ワードq」に検索キーワードを入力すると、Web版Gmailの検索欄と同じ形式でメールを絞り込むことができます。
空にするとすべての新着メールが取得対象になりますが、意図しない読み上げを防止するために何かしら入力しておくことを推奨します。
以上で準備完了です。お疲れ様でした!
マクロを実行すると愛しのずんだもんが読み上げてくれる…かもしれません。🤔
--data-urlencode "感想=API、鬼ムズ!"
だって公式が出している説明がこれとかこれですよ。
OAuthやGoogle APIをすべて理解できる人は超一流IT企業だって夢じゃないでしょう。例えば…そうGoogleとか。
…そんなふざけた感想は置いておいて、この記事で唯一の有益な情報を載せます。
・Try this methodが非常に便利
Gmail APIの使い方を検索していると、やれPythonで実装した~とか、Node.jsが~といった記事の数々。
「そりゃあすごいけどさぁ…いいからCurlコマンドで見せんかい!」(Python読めませんすみませんCurlも最近覚えました非礼な言動をおわびします)
見れます。しかも公式サイトで、その場で動かせます。
このドキュメント、私は何度も理解できずにブラウザバックしていましたが一番下のここ👇

右上の全画面的なボタンをクリックすると…

このように、コマンドを作ってその場で試せるフォームが出現します!
私は特にaccess_tokenをどう送信すればよいか分からず詰まっていたので、このシステム?には随分助けられました。
あとはこういった記事を参考にさせてもらったり、
Bing AIに「このコマンドをPowerShellで動くように変換して」と指示するだけで、Windowsターミナルから試すこともできました。
次マクロを改造する頃には絶対忘れるはずなので、ここにメモしておこうと思います。