GASを使用した文字編集や条件分岐
GASを使用した文字編集や条件分岐のやり方。
もくじ
もくじ
特定文字列を含むトゥートを文字列編集して送る編
たとえば「#unko
」を含む以下のようなトゥートをTwitterに送信するとする。
うんこしようぜ! #unko
そこで上記の「特定文字列を含むトゥートを送る」設定を行うと、Twitterには以下のように投稿される。
うんこしようぜ! #unko
ここで「#unko
を含むトゥートをTwitterにも投稿したいが、その際 #unko
というハッシュタグは除去したい」という場合(ハッシュタグ #unko
をTwitter連携用のトリガーとしてしか使用しないなど)、つまり以下のようなツイートにしたい場合は
うんこしようぜ!
IFTTTだけでは文字列の編集ができないので、GAS(Google Apps Script)を経由して実現する。
順序としては、
- IFTTTでatomからGASへ送る
- GASで文字列編集をしてIFTTTへデータを送信する
- 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-urlencoded
やapplication/json
で送られてくるときはパラメータ受信時の記述を変更する必要があるけど自分で調べて。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function doPost(e) { // text/plain var value1 = e.postData.getDataAsString(); // 文字列置換 value1 = value1.replace(/#<span>unko<\/span>/, ""); callIFTTT(value1); } function callIFTTT(value1) { // さっきメモしたURLを記述 var url = "https://maker.ifttt.com/trigger/post_twitter/with/key/キー"; var headers = { "Content-Type": "application/json" }; var data = { "value1": value1 }; var options = { "method": "POST", "headers": headers, "payload": JSON.stringify(data) }; UrlFetchApp.fetch(url, options); } |
スクリプトの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 のロジック
返信の場合はこんなかんじの文字列が入ってくるようなので
1 |
<span class="h-card"><a href="https://poofion.com/@nigauri" class="u-url mention">@<span>nigauri</span></a> |
doPost
を例えばこんな感じに直す。
1 2 3 4 5 6 7 8 9 10 |
function doPost(e) { var value1 = e.postData.getDataAsString(); // 誰かへの返信の場合には送信しない if (-1 < value1.indexOf("u-url mention")) { return; } callIFTTT(value1); } |
atom → IFTTT(1) → GAS 部分の作成
- RSS Feed → New feed item を選択する。(つまり全件送信するようにする)
- あとはさっきと一緒。
次は投稿画像の連携方法について。