やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ブログ公開されたら自動でTootする(はてなブログ→IFTTT→GAS→mstdn.jp)

 mstdn.jpIFTTTからの接続を拒否する。なのでGASを経由する。

前提

流れ

  1. GASスクリプトを書く
  2. IFTTTで上記スクリプトを実行するアプレットを作る
  3. はてなブログで記事を書いて公開する
  4. 自動でmstdn.jpにTootされる

手順

1. GASスクリプトを書く

  1. Google Driveにアクセスする
  2. +新規その他Google Apps Scriptをクリックする
  3. 以下コードを入力する
// 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);
  }
}
  1. デプロイ新しいデプロイをクリックする
  2. 種類の選択ウェブアプリをクリックする
  3. 説明新しい説明文に任意テキストを入力する(はてなブログ→IFTTT→GAS→mstdn.jp
  4. ウェブアプリ次のユーザとして実行自分を選択する
  5. アクセスできるユーザ全員を選択する
  6. デプロイをクリックする
項目
デプロイID ddddddddddddddddddddddddddd
デプロイURL https://script.google.com/macros/s/AKfycbw34QSoyCljVkB5i22tZAcaJm5fR-V9gwwcpDOxf4Sn3dJ7fnLjYjCmG9OcV2PLaZIcwQ/exec

2. IFTTTで上記スクリプトを実行するアプレットを作る

 流れは以下。

  1. If ThisはてなブログRSSを監視する
  2. Then Thisでさっき書いたGASスクリプトをPOSTする

 手順は以下。

2-1. If This

  1. IFTTTにアクセスする
  2. Createボタンをクリックする
  3. If This addボタンをクリックする
  4. Choose a service画面になる
  5. Search serviceテキストボックスでRSS Feedを入力する
  6. RSS Feedをクリックする
  7. New feed itemをクリックする
  8. はてなブログのフィードURLを入力する(以下のいずれかひとつ)
    • https://ytyaru.hatenablog.com/rss
    • https://ytyaru.hatenablog.com/feed
  9. Create triggerをクリックする

2-2. If This

 上記からのつづき。

  1. Then Thatをクリックする
  2. Choose a service画面になる
  3. Search serviceテキストボックスでWebhooksを入力する
  4. Webhooksをクリックする
  5. Make a web requestをクリックする
  6. URLにさっき作ったGASスクリプトのURLを入力する
  7. MethodPOSTにする
  8. Content Typeapplication/json
  9. Body{ "post_from": "ifttt", "status": "<<<{{EntryTitle}}>>>\n{{EntryUrl}}\n#はてなブログ" }にする
  10. Create actionボタンをクリックする

 なお<<<{{EntryTitle}}>>>はタイトルをURLエンコードするという意味。

2-3. メタデータ設定

  1. Continueボタンをクリックする
  2. Applet titleに任意テキストを入力する
  3. Receive notifications when this Applet runsをデフォルトのままOFFにしておく
  4. Finishボタンをクリックする

3. はてなブログで記事を書いて公開する

 予約投稿でもOK!

4. 自動でmstdn.jpにTootされる

 mstdn.jpでTootされていることを確認する。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux