Google App Script(GAS)を少し触った件。ロット誰がしていいか教えてくれる君
はじめに
Noteから今週中に投稿したら、毎月投稿できたことになるよということで、クリスマスイブの朝からキーボードをたたいています。
私はこの数年FF14をやっていて固定(*1)を組んでコンテンツ攻略に挑んでいるのですが、毎年、クリスマスは予定を入れるなというお達しが来ています。そのため、自分にとってはクリスマスの中止のお知らせ(*2)で一喜一憂しなくて済みます
FF14の固定を組んでいると色々な情報をGoogle Spread Sheetに記載してメモを取ることが多いです。
私が組んでいる固定ではだれが何を報酬で受け取ったかを管理していて、これらの情報をもとに全員に平等に報酬が配られています。
その際に、誰がロット(*3)をしていいのかを、Voice Chat(VC)でコールするのですが、音声情報は伝達した際に、記録して残らないという問題があります。これは由々しき事態です。
自己肯定感をあげるための褒めてくれるASMRを聴いている
耳舐めASMRを聴いている
監禁洗脳ヤンデレASMRを聴いている
これらの音声を聞きながらVCをしていると情報を落としてしまう可能性が高くなります(私はやっていませんが)
褒めてくれる30分。褒められすぎてなんか凹んだ
これを書くためだけに聞いた。すげえゾワゾワした
基本的にこの手の情報をチャットに残していると非常に便利なのですが、上記の画像1を見てもらったらわかるように、文字情報ではないので、ロットしていい人をチェックボックスの状態を見て記載する必要があり、人力の手間が発生することが問題点として挙げられます。
そのため、今回、クリスマスプレゼントとして、Google App Script(以後GAS)でこの問題を解決してみました。あと、GASの始め方についても記載してみます
出来たもの
使い方
masterの名前を自分たちの固定のメンバーの名前に変更する
チェックボックスを入力する
チャットにロットできる人を記載した文字列をコピペして書く
ここからは後から、軽くメモ程度な話になります。ちょっと専門的な話も出てくるので、興味がある人だけお願いします
Google App Script
公式から引用しましたが、要はgoogle SpreadSheetなどgoogle関連のサービスの自動化のためにjavascriptを書いてできますよってことです。
javascriptも結構モダンな書き方ができます。昔は
(昔はIE互換のことを考える必要があった。ついでに各社でjavascriptの使える機能が違っていた)
要はIE互換を気にしなくて、ECMAScriptの機能を使えるという認識でOKです
ちなみ、V8ランタイムということなので、皆さん使っているであろう、chromeの内部でも使われています。(厳密にいえばchromiumのrepoで開発されている)
(これ書くまでgoogle のgitって自社内でやってること知らなかった。。。)
GAS始めよう
spreadSheetの拡張機能の欄からApps Scriptを押せば始められます。
あとはこのコード.gsをいじり続ければOKです。やったね。
セルにコード上でアクセスしよう
function myFunction() {
// A2にアクセスするためのコード
const cell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2,1);
console.log(cell.getValue()) // セル内の値を取得する
}
上記のコードを書いたら、実行を押して権限を付与すればOKです。
補足:SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2,1)について
SpreadsheetApp
SpreadSheetをJS側で操作するためのクラス
getActiveSpreadsheet
SpreadSheet = ファイルのこと
getActivesheet
Sheet = 下側のシート1などのことを指す
getRange(row,col)
row=行= y
col = 列 = x
基本的にgetRangeでセルにアクセスできるまで押さえておけば色々できる。
SpreadSheet と Sheetの概念も大事。今は単一のシートしかないため activeSheetでのアクセスでも問題ないが、別シートからのアクセスをしたい場合は、getActiveSpreadsheet.getByNameなどで名前から引く必要がある。
ローカルの開発環境の構築
上の状態のメリットはさくっと書いたコードを試せるというメリットではあるのですが、個人的にgitの管理などできないことが気になります。個人開発とはいえ、gitでコードを管理はしておきたいです。
(個人開発 gitとかでちょっとバズっていましたので少し触れます。
全部addしてステージングするとかなめているのか
commit messageがいつも同じとかなめているのか
現代githubはmainになっている
個人開発だからmainに直接pushを許容するかどうかは任せる
ある程度進んだらブランチ切って作業したほうがよいのではと思っている
最初はブランチを切るメリットはあまりない気がしているが
個人開発なのでこのスタイル というのはよくない
主語が大きすぎる
ちなみに下記の人をtweetを見ていると色々な人からおしかりをもらったっぽいです。
ブラウザ上で開発できることは確かにメリットですが、もし見ている方の中には手元のvimで開発したいとか、サクラエディタでコードを書きたいという方がいるかもしれません。
あと、jsの型がない世界にキレ散らかしてtypescriptで書きたいという方がいると思います。tsをjsに変換する必要があるので、このあたりも含めて対応が必要です。
ということで、ローカルの開発環境を整えましょう。きっちりとここで管理しておくことをおすすめします。
下記が便利なので、ありがたく使いましょう。ちなみにclaspが必要なので、下記コマンドを実行して、インストールとログインを済ませましょう。
npm install -g clasp //npm派
yarn global add clasp //yarn派
clasp login
あとはtsでコードを書いてyarn deployすればOKです。
この時、ブラウザで書いているコードは消えてしまうため、注意が必要です。
まとめ
色々書こうと思ったのですが、ここからは技術的なことになるので、noteよりも別媒体で書いた方がよいと思ったので、このあたりにします。
手癖で書いたことを面白可笑しく書いていければと思います。
repoを置いておきます。
投げ銭先: Link
この記事が気に入ったらサポートをしてみませんか?