はじめまして太陽です!
先日はじめてGASに触れたので、初めてのテクログ記事も作ってみました!
GASとは
GAS(Google Apps Script)とは、簡潔にいうと「Googleが提供する各種サービスの自動化、連携を行う為の開発ツール」です。
https://ja.wikipedia.org/wiki/Google_Apps_Script
https://satori.marketing/marketing-blog/gas-introduction/#gas%E3%81%A8%E3%81%AF
必要な権限が付与されたアカウントがスクリプトを実行することで
「スプレッドシートに入力された内容を指定フォーマットでGoogleドキュメントへ転記」、「指定ドライブ内でファイルが追加・更新されたら通知」などを行うことができます。
今回は「Googleフォームに入力された内容を成形し、チャットワークへ通知を飛ばす」スクリプトに挑戦しました。
事前準備
(1)回答を収集する為のGoogleフォームの作成
(2)上記フォームの回答を集約するスプレッドシートの作成
(3)ChatWork通知の準備
(事前準備の作業は割愛します)
GASの準備
(2)のスプレッドシートにアクセスし「拡張機能」から「Apps Script」を選択することで、GASのコード編集用画面へ遷移します。
GASのコード作成
準備が整ったら、実際のコード作成です。今回は以下のコードを作成しました。
// スプシのメイン情報を管理
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 以下、チャットワーク用設定
const token = 'XXXXXXXXXXXXXXXXXXXXXX'; //ChatWorkのAPIトークン
const room_id = '000000000';//ルームID
const client = ChatWorkClient.factory({ token: token });
function main() {
// 参照するシートを指定
const sheet = ss.getSheetByName('<参照するシート名>');
// 最新の回答を対象にする為、最終行の行番号を取得
const last_row_num = sheet.getLastRow();
// 全設問を対象とする為、最後の設問の列番号を取得
const last_col_num = sheet.getLastColumn();
let chatwork_text = `[info]`;
for (let i = 1; i <= last_col_num; i++) {
// 設問ごとの回答内容を取得
// ★項番1から取得する場合、タイムスタンプや収集用メールアドレスも対象になってしまうので注意
let answer_value = sheet.getRange(last_row_num, i).getValue();
// 通知用テキストに回答を集約
chatwork_text = `${chatwork_text}\n${answer_value}`;
}
chatwork_text = chatwork_text + `[/info]`;
// 指定ルームへ回答を送信
client.sendMessage({
room_id: room_id,
body: chatwork_text
});
}トリガー設定
コードの作成が完了したら、次は実行トリガーの設定です。
今回はフォームから回答されたタイミングで実行してほしいため、以下の流れで設定を行います。
・左メニューから「トリガー(目覚まし時計のアイコン)」を選択しトリガー設定を描画
・「トリガーを追加」から新規トリガーを作成します。今回は以下の設定で保存
※その際、アカウントに対して権限付与の確認が出てくる場合がありますので
「承認」もしくは「Allow」を選択してください
チャットワーク連携
☆今回はチャットワーク連携を行うため、ライブラリの追加を行います。
メニュー内「ライブラリ」の+をクリックして追加フォームを開き、
スクリプトIDを入力します。
今回はチャットワーク用ライブラリの為、
「1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav」を入力。
検索ボタン押下で表示されたライブラリが問題なければ「追加」でライブラリを追加します。
ここまでの作業が終われば、チャットワークへの通知も行えるはずです。
Googleフォームから回答を送信してみます。
できた☆
やってみての感想
最初はちょっとハードルが高いかな、という印象でしたが
実際にコーディングしてみると(JSに触れた経験があったので)思いのほかスムーズに作業できました。
アカウントの権限など、他言語では気にしない部分に注意する必要はあるものの
業務に活かすのは難しくない印象です。
個人用に何か作ってみてもいいのでは?とも思えてます。