

システム連携ネタでよくブログを書いている日下です。
自社の業務効率化のため、Facebook と Questetra の連携方法を調査しました。
以下、その連携の設定方法についてまとめます。
2: Facebook と Questetra との連携設定
2.1: 連携ツール Zapier の設定
2.2: Questetra から Zapier を呼び出す設定
3: Facebook と Questetra との連携方法の比較
4: まとめ
1: Facebook と Questetra との連携を検討した背景
自社のマーケティング活動の一環で、定期的に自社の Facebook ページへの記事投稿を行う業務があります。
もともとは Facebook ページへの記事投稿の権限がある人が、記事内容を考えていたので、手動投稿でもそれほど困らない状況でした。ただ、記事案を作成する人・チェックする人を分けることとなり、また投稿権限を持たない人が記事案を作成することになりました。
ということで、一連の作業をなるべく効率化・自動化したいと考えた次第です。
2: Facebook と Questetra との連携設定
連携方法としては以下の2通りが考えられます。
- (a) Questetra から直接 Facebook API をたたく
- (b) Questetra → 連携ツールを経由 → Facebook に投稿する
どちらも試したのですが、最終的に (b) の方法で運用することとしました。理由は後述します。
ということで、以下のようなイメージになります。連携ツールとしては Zapier を利用することにしました。

2.1: 連携ツール Zapier の設定
ここで実現することは、HTTP リクエストを受信して Facebook ページに記事投稿する、ということです。また Zapier 自体の設定方法については検索すればいろいろ情報が出てくるので、ここではポイントだけにしぼります。
- TRIGGER
- Webhooks by Zapier の Catch Hook(後の設定で必要になるので URL はコピーしておく)
- ACTION
- Facebook Page の Create Page Post
- 対象の Facebook Page のアカウントを選択
- Pageは対象のページを選択、Message と Link URL は以下の JSON フォーマットとのひもづけが必要なので、手で作った JSON をテスト送付してからのひもづけとなる(このあたりがちょっと煩雑な感じ)
{
"message" : "(ここに記事の文言が入る)",
"link" : "(ここにリンクURLが入る)"
}
2.2: Questetra から Zapier を呼び出す設定
承認フローを経た後に Facebook ページに投稿するわけですが、今回の本題は連携部分ですので、Zapier にデータを送る部分に話をしぼります。ここで実現することは、Questetra から Zapier の Webhook に所定のフォーマットで HTTP リクエストを送る、ということです。
まず、送付する JSON データは「データ更新」で準備します。
※関連マニュアル:M227: 業務データの結合や四則演算が自動実行されるように設定する

以下のような式を設定します(「q_string0」「q_string1」の部分はデータ項目のフィールド名によって変わります)。
{
"message":"#{#q_string0}",
"link":"#{#q_string1}"
}
また Zapier の Webhook には 「メッセージ送信中間イベント(HTTP)」 で HTTP リクエストを送ります。
※関連マニュアル:M225: 業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する

- 「通信設定」
- 「アクセスURL」:https://hooks.zapier.com/hooks/catch/XXXXX/XXXXX/(Zapier の設定でコピーしておいたもの)
- 「HTTP Method」:POST(リクエストボディを指定)
- 「エラー発生時にエラー内容を格納する文字型データ項目」:必須ではないが、指定しておくとエラー詳細が確認できるのでベター。またこのイベントの後ろでこのデータ項目を見てエラー有無を判定して、エラー時の処理を入れておくのがさらにベター
- 「リクエストボディ」:JSON を送付する場合には「リクエストボディとして送信するデータ項目」に JSON を保持する文字型を指定して、「リクエストボディの Content-Type」に「application/json」を指定
- 「レスポンス」:必須ではないが、「レスポンスを保存する」にチェックをつけ、文字型データ項目を指定しておくと結果確認できるのでベター
あと、予約投稿させる場合には、この HTTP リクエスト送付のタイミングをコントロールすればいいので
・この「メッセージ送信中間イベント(HTTP)」の前に「タイマー中間イベント」を置いておく。
・日時型データ項目で公開日時を指定するようにしておく。
・「タイマー中間イベント」 の「データで指定された日時」でその公開日時のデータ項目を指定する。
という対応をはさめば実現できます。
※関連マニュアル:M223: 処理フロー途中で-自動的に一定時間スリープするように設定する
それらを並べると以下のような感じになります。

3: Facebook と Questetra との連携方法の比較
連携方法として以下の2通りあると書いてましたが、それぞれどういうメリット・デメリットがあるのかを整理します。
- (a) Questetra から直接 Facebook API をたたく
- (b) Questetra → 連携ツールを経由 → Facebook に投稿する
まず (a) について
□ (a) のメリット
・管理すべきツールが少ない
■ (a) のデメリット
・Facebook API をたたくための Facebook アプリ登録が必要、そしてそれを「ライブ」(有効な状態)にしないといけない
・Facebook API をたたくためのアクセストークンの取得がややこしい、また Facebook API をたたくためのスクリプトの準備が必要
※OAuth で接続する場合、接続先である Facebook でアプリ登録が必要なのは当然だとしても、「ライブ」にするとなると、プライバシーポリシーの URL 等が必要だったり、レビューがあったりといろいろ手続きに手がかかるのがつらい(ちなみに「ライブ」にしないと API 経由で記事投稿できるのに、自分以外のユーザには記事が見えてない、という状況になって、何がおかしいのかわからずにハマりました)。
※アクセストークンについては、「ユーザーアクセストークン」を取得した後に、無期限の「ページアクセストークン」を取得しないといけない、という事情があります(Questetra には OAuth のアクセストークンをラクに取得できる仕組みがあるものの、この込み入った事情のためにその仕組みは使えません・・・)。
※(Questetra で動く)スクリプトについては、Addon-XML としてパッケージ化したものを準備することはできるので、まだこの点はカバーできます。
次に (b) について
□ (b) のメリット
・Facebook との連携設定は、連携ツールでの設定だけになるのでだいぶラク
■ (b) のデメリット
・管理すべきツールが多くなる
・Zapier で提供される Facebook ページとの連携について、公開日時を指定した予約投稿ができない
※Zapier を使うと予約投稿ができない(Facebook API としてその機能はあるが、Zapier が対応していない)のですが、Questetra 側で指定された日時まで待機させることができるので、カバーできます。
ということで、(a) だといろいろ手がかかるので (b) を選択した次第です。
正直なところ、Addon-XML という形で「Facebook 連携パーツ」とパッケージ化したものがあると見た目にはいいのですが、それを使ってもらうための設定がかなり大変になるのでやめました。
4: まとめ
いろいろと書きましたが、業務フローの途中で Facebook へ自動投稿する仕組みを組み込むことは、そこそこカンタンに実現できます。うまく活用してください。
もし、ご質問等がありましたら、お問い合わせフォームからお気軽にご連絡ください。
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra