ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

ランチタイムのグループ分けを自動で行う「UnitLunch」を改良しました

オンライン飲み会のグループ分けを考えるのが大変。。。自動化しないともう無理だ!

ブレイクアウトルームの組分け、どうすればいい?」
と同僚から相談されて、ググったら出てきた

を紹介しました。

「なるほど、良さそう。これでやってみるね」と言われて、めでたしめでたしと思っていたのですが、
後日、「人数多いせいか、タイムアウトしちゃって無理かも……」と言われました。

というわけでスクリプトを見てみると、
たしかに Google Apps Script でコストの高い(タイムアウトの原因となる)
getValue() メソッドgetValues() メソッドが for 文の中で何度も呼び出されていて、これでは無理そうです。

自分のアカウントで試してみても、18人を4人ずつに分けることですらタイムアウトしました。

f:id:nekonenene:20210905030510p:plain

6分かかっても終わりません。これはなかなかです。
原因は getValue や getValues の呼び出し回数の多さとわかっていますから、
一度の getValues メソッドで、シート全体の値を取得する方針で修正しました。

github.com

できあがったのがこちら ↑ です。
6分以上かかっていた処理が、1秒前後で終わるようになりました。
コメントもだいぶ足しましたので、カスタマイズしやすくなっているかと思います。

使い方は元のブログ記事とほぼ同じです。
元のブログ記事のやり方に沿うなら、スプレッドシートの URL をコード内に入力する必要はないので、その部分のコードの修正もおこなっています。

シャッフルランチやオンライン飲み会などのチーム分けに、ぜひご活用ください。