この記事は2017年07月23日にqiitaに投稿した内容です。
環境
V2.10
概要
GoogleAppScriptを使用して一定時間ごとにFacebookにメッセージを投稿します
Facebookアプリの作成
https://developers.facebook.com/apps/
・「新しいアプリの追加」を押す ・「表示名」を入力する(例:TestGAS) ・「アプリIDを作成したください」を押す ・セキュリティチェックで文字を入力する
アクセストークンの取得
https://developers.facebook.com/tools/explorer/
・「グラフAPIエクスプローラ」の右側の「アプリ」と表示されているドロップボックスを作成したアプリに変更する(例:TestGAS) 最初は「GraphApiExplorer」と表示されているかもしれない ・「トークンを取得」を押す ・「ユーザーアクセストークンを取得」を押す ・「publish_actions」にチェックする ・「アクセストークンを取得」を押す 「アクセストークン」に表示される このアクセストークンは短期で1時間くらいしか有効じゃない
長期アクセストークンの取得
https://developers.facebook.com/tools/explorer/
・「GET/V2.10/」の横に「oauth/access_token?grant_type=fb_exchange_token&client_id=AAA&client_secret=BBB&fb_exchange_token=XXX」と入力して、「送信」 AAAはアプリID(ダッシュボードで確認) BBBはappsecret(ダッシュボードで確認) XXXは取得したアクセストークン ・返ってきた長期アクセストークンをメモる
ユーザーIDの確認
https://developers.facebook.com/tools/explorer/
・「GET/V2.10/」の横に「me?fields=id,name」と入力して、「送信」
投稿のテスト
https://developers.facebook.com/tools/explorer/
・「GET/V2.10/」の「GET」を「POST」に変更 ・「me/feed?message=TestMessage」と入力して「送信」 TestMessageが投稿される
ブラウザからUrlで投稿
・ブラウザのURL入力欄で「https://graph.facebook.com/me/feed?method=POST&version=v2.10&message=TestMessage&access_token=XXX」と入力してリターン meの部分はユーザーIDでも可能 XXXは取得した長期アクセストークン
アクセストークンデバッガ
https://developers.facebook.com/tools/debug/accesstoken/
アクセストークンを入力すると有効期限等の情報が得られる
GoogleAppScriptの作成
https://script.google.com/macros/d/
・下記のスクリプトをコピペして置き換える
アクセストークン用スクリプトプロパティの作成
https://script.google.com/macros/d/
・「ファイル」>「プロジェクトのプロパティ」を押す ・「スプリプトのプロパティ」タブに変更する ・「行の追加」を押す ・「名前」にプロパティ名を入れる(例:accessToken) ・「名前」欄の右側を押すと「値」入力欄が出るので取得した長期アクセストークンを入力する PropertiesService.getScriptProperties().getProperty('accessToken')でアクセスできる
一定時間毎に処理を行う
GoogleAppScriptを使用して一定時間毎にFirebaseにレコードを追加するを参照する
スクリプト
function setTrigger()
{
//十分毎に処理を実行
var executeFuncName = "httpRequestFacebookPost";
deleteTriggers( executeFuncName );
ScriptApp.newTrigger( executeFuncName ).timeBased().everyMinutes( 10 ).create();
}
function deleteTriggers( executeFuncName )
{
//登録されているトリガーを削除
var triggers = ScriptApp.getProjectTriggers();
for( var i = 0; i < triggers.length; i++ )
{
if ( triggers[ i ].getHandlerFunction() == executeFuncName )
ScriptApp.deleteTrigger( triggers[ i ] );
}
}
function httpRequestFacebookPost()
{
var uri = "https://graph.facebook.com/me/feed?method=POST&version=v2.10";
var message = "TestMessage4";
var accessToken = PropertiesService.getScriptProperties().getProperty('accessToken');
UrlFetchApp.fetch( uri + "&message=" + message + "&access_token=" + accessToken );
}