LoginSignup
5

More than 5 years have passed since last update.

ドシロウトがマストドンボット作ってみた

Posted at

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便利ですね。

以 上

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5