0.初めに
私はエンジニアではないただのドシロウトです。
マストドンを利用しており、自動で通知できるボットみたいものを動かしてみたくなりました。
そこで私が一番使いやすいGoogle Apps Scriptでボットを作れないか試してみました。
なお、マストドンにアクセスするにはトークンが必要となりますが、以下のWEBサービスを利用して取得しています。
Access Token Generator for Mastodon API
https://takahashim.github.io/mastodon-access-token/
1.作ったもの
用意したのはGoogleスプレッドシートとGASのスクリプトだけです。
2.Googleスプレッドシート
分かりづらいかもしれませんが下表のように作成しました(カッコ内は列番号)
行番号 | 曜日(0) | 投稿する文面の内容(1) |
---|---|---|
1 | 日曜日 | 投稿文面 |
2 | 月曜日 | 投稿文面 |
3 | 火曜日 | 投稿文面 |
4 | 水曜日 | 投稿文面 |
5 | 木曜日 | 投稿文面 |
6 | 金曜日 | 投稿文面 |
7 | 土曜日 | 投稿文面 |
曜日別に投稿文面が設定できるようにしてあります。
3.GASのスクリプト
GASのコードは以下となります。
msttou.gs
function msttou() {
// アクセストークンをスクリプトプロパティから取得
var valuex = PropertiesService.getScriptProperties().getProperty('token01');
// 投稿内容取得
var toukoux= touget();
if (toukoux == 'none') {
console.log('本日投稿なし');
return false;
};
// post用URL生成
var posturl = 'https://(マストドンのURL)/api/v1/statuses';
// POSTで送る(JSON形式)
var data = {
'access_token': valuex,
'status': toukoux
};
var options = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
UrlFetchApp.fetch(posturl, options);
}
function touget() {
var date = new Date();
var youbiidx = date.getDay(); /* 曜日の取得 0は日曜 */
var rtntou = 'none';
// スプレッドシート名:mstdntou の取得
var files = DriveApp.getFilesByName('mstdntou');
if (files.hasNext()) {
var spreadsheet = SpreadsheetApp.open(files.next());
// シート番号0を取得
var sheet = spreadsheet.getSheets()[0];
var var1=sheet.getDataRange().getValues();
for (var rowidx in var1) {
if (rowidx == youbiidx) {
if (var1[rowidx][1] == '通知なし') {
} else {
var rtntou = var1[rowidx][1];
};
};
};
};
return rtntou;
}
関数msttouをトリガーで1日1回実行するように設定しています。
一応、トークンを隠すためにスクリプトプロパティを使っています。
Class PropertiesService
https://developers.google.com/apps-script/reference/properties/properties-service
4.まとめ
マストドンでボットを使いたい人には簡単でいいと思います。
やっぱりGAS便利ですね。
以 上