ブログ公開されたら自動でTootする(はてなブログ→IFTTT→GAS→mstdn.jp)
mstdn.jpはIFTTTからの接続を拒否する。なのでGASを経由する。
前提
流れ
手順
1. GASでスクリプトを書く
- Google Driveにアクセスする
+新規
→その他
→Google Apps Script
をクリックする- 以下コードを入力する
// https://neos21.net/blog/2020/04/08-02.html#gas-%E3%82%92%E7%B5%8C%E7%94%B1%E3%81%97%E3%81%A6%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B function doPost(e) { try { // JSON パースする (パラメータがない場合はココで例外が発生する) const params = JSON.parse(e.postData.getDataAsString()); // IFTTT からの連携フラグがない場合、投稿文字列がない場合は何もしない if(params.post_from !== 'ifttt' || params.status == null || params.status === '') { return ContentService.createTextOutput(JSON.stringify({ error: 'Invalid Parameter' })).setMimeType(ContentService.MimeType.JSON); } const result = UrlFetchApp.fetch('https://mstdn.jp/api/v1/statuses', { 'method': 'POST', 'payload': { 'access_token': 'dzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, 'status' : params.status, 'visibility' : 'public' } }); Logger.log(result); return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON); } catch(error) { Logger.log(error); return ContentService.createTextOutput(JSON.stringify({ error: error })).setMimeType(ContentService.MimeType.JSON); } }
デプロイ
→新しいデプロイ
をクリックする種類の選択
→ウェブアプリ
をクリックする説明
の新しい説明文
に任意テキストを入力する(はてなブログ→IFTTT→GAS→mstdn.jp
)ウェブアプリ
の次のユーザとして実行
で自分
を選択するアクセスできるユーザ
で全員
を選択するデプロイ
をクリックする
項目 | 値 |
---|---|
デプロイID | ddddddddddddddddddddddddddd |
デプロイURL | https://script.google.com/macros/s/AKfycbw34QSoyCljVkB5i22tZAcaJm5fR-V9gwwcpDOxf4Sn3dJ7fnLjYjCmG9OcV2PLaZIcwQ/exec |
2. IFTTTで上記スクリプトを実行するアプレットを作る
流れは以下。
手順は以下。
2-1. If This
- IFTTTにアクセスする
Create
ボタンをクリックするIf This add
ボタンをクリックするChoose a service
画面になるSearch service
テキストボックスでRSS Feed
を入力するRSS Feed
をクリックするNew feed item
をクリックする- はてなブログのフィードURLを入力する(以下のいずれかひとつ)
https://ytyaru.hatenablog.com/rss
https://ytyaru.hatenablog.com/feed
Create trigger
をクリックする
2-2. If This
上記からのつづき。
Then That
をクリックするChoose a service
画面になるSearch service
テキストボックスでWebhooks
を入力するWebhooks
をクリックするMake a web request
をクリックするURL
にさっき作ったGASスクリプトのURLを入力するMethod
はPOST
にするContent Type
はapplication/json
Body
は{ "post_from": "ifttt", "status": "<<<{{EntryTitle}}>>>\n{{EntryUrl}}\n#はてなブログ" }
にするCreate action
ボタンをクリックする
なお<<<{{EntryTitle}}>>>
はタイトルをURLエンコードするという意味。
2-3. メタデータ設定
Continue
ボタンをクリックするApplet title
に任意テキストを入力するReceive notifications when this Applet runs
をデフォルトのままOFFにしておくFinish
ボタンをクリックする
3. はてなブログで記事を書いて公開する
予約投稿でもOK!
4. 自動でmstdn.jpにTootされる
mstdn.jpでTootされていることを確認する。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux