非エンジニアが
BAND+GAS
でサークル運営してみた
+おまけ
非公開版
自己紹介
- @basictomonokai
- ただのおじさん(事務職)
- 非エンジニア(ノンプログラマー)
- 趣味でBASIC!とHTML、JS、CSS程度
- 運動のサークル所属

きっかけ
- サークルの事務担当
- 今までは投稿するとメールが送れる無料レンタル掲示板で全て連絡・調整をやっていた
- 2018年頭のサークル新年会で変えた方がいいと言われた
- 面倒くさいが仕方なく探し始めた
- 無料で利用できるものを探した
見つけたもの その1
- BAND
サークル運営管理アプリ
有名なLINEの姉妹?アプリ
機能
カレンダーの予定登録
出欠確認、掲示板、トーク


なかなか良いが通知が弱い
- 現在までメールがイベントのトリガー
- おじさん、おばさんばかりなのですぐ忘れる
- 事前に何回か通知する必要がある
- スマホに慣れていないのでプッシュ通知はダメ
- 体にガタがきているのでドタキャンやドタ参加多い
- 緊急な連絡ほどメールでないと伝わらない

最低限必要と考えた追加機能
- イベント当日、2、7、10日前の自動メール通知+掲示板投稿機能
- 緊急連絡用の専用WEB画面
- 複数の連絡経路確保
しつこいまでの通知機能と緊急連絡時に
オロオロしない超簡単な専用画面
見つけたもの その2
- Google Apps Script(GAS)
Google提供のスクリプト開発/実行環境
・Googleのサービスとの連携ができる
・外部API経由で連携ができる
(Slack、Twitter等)
・サーバー不要
・日時指定で実行できる
・上限はあるが無料
・開発環境が不要(ブラウザーのみ)



実現方式(イメージ)

BANDとGASを連携
実現方式1
- BANDのOpen APIを使いGASがBAND掲示板へアクセス
function sendHttpPost(message){
var payload =
{
"access_token" : "xxxxx",
"band_key" : "yyyyy",
"content" : message,
"do_push" : ccc
};
var options =
{
"method" : "post",
"payload" : payload
};
var response = UrlFetchApp.fetch("https://openapi.band.us/v2.2/band/post/create", options);
Logger.log(response)
}
実現方式2
- BANDのカレンダーをGASがGet
var response = UrlFetchApp.fetch("https://api.band.us/ical?token=");
- GASのトリガーで自動実行(開催予定)

※以前のトリガー画面です
実現方式3
- 緊急連絡用のWEB画面(BAND掲示板+メール)
MailApp.sendEmail('','サークルのメール', 'サークルです。\n投稿お知らせ\n\n'+honbun,
{ name: 'サークル投稿ツール',
bcc: 'aaa1@bbb.cc,aaa2@bbb.cc,aaa3@bbb.cc,
});
- GASからメール通知

実現方式4
- BAND掲示板+サークルLINEグループに通知するWEB画面


実現方式5
- その他 ポータル、カレンダ、抽選結果登録画面等も作成

実現方式6
- その他 LINEBOTも利用

GASでやってみて(1)
- Pros
◆ネット上にGASの情報多い
⇒Qiitaやそれ以外のサイトでも記事は多い
⇒社内自動化の記事など
◆GASはJSなのでJSの情報も役に立った
⇒JSで動けば大体動く印象
◆ブラウザーだけで作れるので楽
⇒Androidタブレットでも一応作れた
GASでやってみて(2)
- Cons
◆BANDとGASの連携情報はゼロ
⇒SLACK、ChatWork、Fitbit等の連携記事を参考
◆BANDとGoogleのカレンダーの連携は出来ず
⇒BANDのカレンダーはなぜかUTC(9時間ずれる)
⇒Googleカレンダーと連携せず、iCALを直読みした
◆GASでのWebアプリのコンテンツは特殊
⇒GASでは「.gs」と「.html」しか作れない
⇒「index.js」→「index.js.html」の形で登録
◆BANDのバグ?
⇒カレンダーを変更するとTZがTokyo→Seoulに
◆メール100通、WEB2万アクセス/日などの上限あり
◆GASに組み込んだあとのJSのデバッグが難しい。
⇒minify化されるので
開発とかテストとか
・作った人…私だけ
・テスト…サークルメンバーに強制…(^_^;)
・開発期間…約2か月(五月雨式)
・テスト期間…約2か月(五月雨式)
・開発場所…ほとんどもくもく会+自宅
・開発規模…本数(GS:12,HTML:7,JS:7)
STEP(GS:2544,HTML:2204,JS:330)
稼働後~現在の話(1)
・2018/4よりなんとか無事稼働させることができた
・システム的なトラブルは2回だけ
⇒ドコモのスマホで受信拒否される
(多分キャリアのポリシー変更)
→メール送付元アドレスに手動でメール送ってもらい解消
⇒カレンダーの繰り返し予定の変更後の誤った取得
(iCalの理解不足・ロジックミス)
→GAS修正して解消
・Googleのインフラ側はとても安定
⇒2019/3のGoogleドライブ障害程度
→たまたま影響なかった
稼働後~現在の話(2)
・人間系エラーは沢山(使い方など)
⇒おじさんは非協力が多く、おばさんは協力的
⇒無関心という非協力がいちばんつらかった
(「よくわからなくて…」、「聞いてない」等)
⇒事前にルール提示し全員から承認回答をもらったのは
良かった
・プロのエンジニアではないのでGASを触る頻度が下がった
⇒私のスキル維持が心配
ここまでの結論
- GASは最も簡単なWEB画面開発環境
- 非エンジニアでもできる
- 便利なので活用しましょう
+おまけ
その他自分用に作ったもの
※あくまで個人用にGAS勉強で作りました
OCR
日記ネタ帳


暗号化
Gmail閲覧


URL短縮
翻訳


キュレーション
ブログ自動生成


BAND+GAS 201905版
By basictomonokai
BAND+GAS 201905版
- 922