非エンジニアが

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短縮

翻訳

キュレーション

ブログ自動生成

GASは便利!!

時間があればデモします…

 

◆LINEボットの動画

https://www.youtube.com/watch?v=kYFx412tcqM&t=29s

 

- EOF -

BAND+GAS 201905版

By basictomonokai

BAND+GAS 201905版

  • 787