ブログ公開されたら自動で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/rsshttps://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/jsonBodyは{ "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