最近スプレッドシートをよく利用していてGASというものが便利なものであるということで
調べながら試してみました。
備忘録として概要と流れをまとめてみました。
参考にしたサイトはこちら
Twitter Developerアカウントを申請する。
こちらの公式サイトから申請をして開発者用のアカウントを取得します。
Twitter Developer アカウントを取得するTwitterアカウントでログインしておきます。
どのように利用をするのかフォームへ入力してTwitter社へ提出します。
英語で提出が必要ですが、Google翻訳の精度が上がっていてストレスなく理解できるレベルでした。
Twitter APIキーを取得する。
Twitter Developerアカウントを作成してからアプリの登録をしてAPIキーを確認します。
ツイートする内容をスプレッドシートにまとめる。
投稿内容と画像URLの列を分けてスプレッドシートを作成しておきます。
おそらくこちらにはタイトルやカテゴリ別で分けて自動ツイートすることも可能と思われます。
スクリプトエディタを作成する
スプレッドシートの「ツール」からスクリプトエディタを選択します。
ライブラリを追加する。
下記のプロジェクトキーをコピーして「ライブラリを追加」の欄に貼り付け、「追加」をクリックします。
1rgo8rXsxi1DxI_5Xgo_t3irTw1Y5cxl2mGSkbozKsSXf2E_KBBPC3xTF
最新のバージョンを選択して「保存」します
Developerサイトのアプリに「コールバックURL」を登録する
Twitter Developerサイトにアクセスして、 設定からCallback URLs へ下記の内容を入力します。
https://script.google.com/macros/d/スクリプトID/usercallback
GASプロジェクトのスクリプトIDが必要なので、スクリプトエディタの「ファイル」→「プロジェクトのプロパティ」を開くと確認できます。
スクリプトエディタの作成
下記のソースコードを参照して作成していきます。
https://gist.github.com/M-Igashi/750ab08718687d11bff6322b8d6f5d90
アプリを連携認証させる authorize
//認証用インスタンスの生成
var twitter = TwitterWebService.getInstance(
'xxxxxxxxxx',//API Key
'xxxxxxxxxx'//API secret key
);
//アプリを連携認証する
function authorize() {
twitter.authorize();
}
//認証を解除する
function reset() {
twitter.reset();
}
//認証後のコールバック
function authCallback(request) {
return twitter.authCallback(request);
}
3,4行目のAPIキーは、Twitter Developerサイトを参照して入力します。
コードの記入が終わったら、authorize()を実行してエラーが出ないことを確認します。
表示からログを確認して記載しているURLへアクセスして連携させます。
ランダム抽出の関数を作る CreatePostMessage
//Twitterに投稿するメッセージを作成する
function CreatePostMessage() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
var lastRow = sheet.getLastRow();
//2行目~最終行の間で、ランダムな行番号を算出する
var row = Math.ceil(Math.random() * (lastRow-1)) + 1;
//ランダムに算出した行番号のタイトルとURLを取得
var title = sheet.getRange(row, 1).getValue();
var url = sheet.getRange(row, 2).getValue();
var header = getDateInfo() + 'のもりのPickup記事はコチラ▷';
var postMessage = header + title + '\n\n' + url;
return postMessage;
}
「getSheetByName(‘シート1’);」の箇所にはシート名を入力します。
ツイートする機能を作る PostMessage
// ツイートを投稿
function postTweet() {
var postMessage = CreatePostMessage();
var service = twitter.getService();
var endPointUrl = 'https://api.twitter.com/1.1/statuses/update.json';
var response = service.fetch(endPointUrl, {
method: 'post',
payload: {
status: postMessage
}
});
}
プロジェクトのトリガーを設定
スクリプトエディタの編集から現在のプロジェクトトリガーを設定します。
今回はTwitterに自動で投稿するツールなので、時間ごとに設定しました。
だいぶ苦戦して分かりましたが、こちらのGASでは複数アカウントで運用は出来ないみたいです。
“自動化することによって効率的に作業ができるようになったので使いこなしたい。”
コメント
コメント一覧 (1件)
ランダムではなくて、上から順番にツイートできるような仕様にしてもらえるうれしかった。