Mastodon → Twitter の連携(IFTTT + GAS)

GASを使用した文字編集や条件分岐

GASを使用した文字編集や条件分岐のやり方。

特定文字列を含むトゥートを文字列編集して送る編

たとえば「#unko」を含む以下のようなトゥートをTwitterに送信するとする。

うんこしようぜ! #unko

そこで上記の「特定文字列を含むトゥートを送る」設定を行うと、Twitterには以下のように投稿される。

うんこしようぜ! #unko

ここで「#unko を含むトゥートをTwitterにも投稿したいが、その際 #unko というハッシュタグは除去したい」という場合(ハッシュタグ #unko をTwitter連携用のトリガーとしてしか使用しないなど)、つまり以下のようなツイートにしたい場合は

うんこしようぜ!

IFTTTだけでは文字列の編集ができないので、GAS(Google Apps Script)を経由して実現する。

順序としては、

  1. IFTTTでatomからGASへ送る
  2. GASで文字列編集をしてIFTTTへデータを送信する
  3. IFTTTで受信したデータをTwitterへ連携する

つまり atom → IFTTT(1) → GAS → IFTTT(2) → Twitter のような流れで連携する。

IFTTT(2) → Twitter の部分の作成

まずは「3. IFTTTで受信したデータをTwitterへ連携する」部分を作成する。

this

  • Webhooks → Receive a web request を選択する。
  • Event Name には任意の値を設定する。今回は「post_twitter」を設定する。

that

  • Twitter → Post a tweet を選択する。
  • Tweet text には {{Value1}} を選択する。

URLのメモ

  • Do more with Webhooksの「Documentation」を開き、URLをメモする。
  • URLは https://maker.ifttt.com/trigger/イベント名/with/key/キー
    (今回は
    https://maker.ifttt.com/trigger/post_twitter/with/key/キー
    ) となる。

GAS のWebサービスの作成

スクリプトの作成

  • GASにアクセスし、「新規スクリプト」クリックしてエディターを開く。
  • 以下のコードを記述する。
    • doPost(e) は外部からPOSTされた時に自動で実行される。
    • x-www-form-urlencodedapplication/json で送られてくるときはパラメータ受信時の記述を変更する必要があるけど自分で調べて。

スクリプトのWebサービス化

  • エディタ画面のメニューから、「公開 → ウェブ アプリケーションとして導入」を選択する。
  • 「アプリケーションにアクセスできるユーザー」を「全員(匿名ユーザを含む)」にしてから保存し、「現在のウェブ アプリケーションの URL」をメモしておく。
  • コードの修正時は、「公開 → ウェブ アプリケーションとして導入」からプロジェクトバージョン「New」を選択して更新する。

atom → IFTTT(1) → GAS 部分の作成

this

  • RSS Feed → New feed item matches を選択する。
  • Keyword or simple phrase にはトリガーとなる語句を設定する。
  • Feed URL には https://インスタンス/@ユーザ名.atom を設定する。
  • ていうかさっきと同じだヨ。

that

  • Webhooks → Make a web request を選択する。
  • URL には先程メモしたGASの「現在のウェブ アプリケーションの URL」を設定する。
  • Method は 「POST」を選択する。
  • Content Type は 「text/plain」を選択する。
  • Body は {{EntryContent}} を設定する。

これにて無事完成。

GASを使うと内容をゴリゴリ編集できたり分岐もできたり割と自由自在なのでIFTTTの幅が広がるネ。ていうか無料なのにWebサービスを手軽に作れるGASがすごい。

基本的に全トゥートを送るけどメンションは送りたくない編

IFTTT(2) → Twitter の部分の作成

さっきと同じ。

GAS のロジック

返信の場合はこんなかんじの文字列が入ってくるようなので

doPost を例えばこんな感じに直す。

atom → IFTTT(1) → GAS 部分の作成

  • RSS Feed → New feed item を選択する。(つまり全件送信するようにする)
  • あとはさっきと一緒。

次は投稿画像の連携方法について。