#50 「いつ?」「誰が?」を記録する
Facebook グループ「Google for Education 研究グループ」に寄せられていた
という投稿へのアイディアとして、以前の記事でもネタにした onEdit() を用いた簡単なプログラムを作成してみました。
Google スプレッドシートに入力を行うと、「いつ?」「誰が?」という情報を自動的に記録します。
作成したプログラム
Google スプレッドシートに簡単な GAS のプログラムが埋め込んであります。このプログラムによって、
何か入力すると、列 A に「いつ?」、列 B に「誰が?」という情報が記録されます。
列 A・列 B、1行目で入力が行われても、「いつ?」「誰が?」の記録は行われません。
既にこれらの情報「いつ?」「誰が?」が記録されている行で入力が行われても、これらの情報は上書きされません。
このプログラムが行うのは、上記の内容だけです。
(1) 利用するには…
利用する Google アカウントでログインした状態で、以下のリンクにアクセスして、自身の Google ドライブにファイルをコピーします。
https://docs.google.com/spreadsheets/d/1wNwpNk80NbY07YqmVP1-IqcQx2vTRRrckZWSmgbjiyU/copy
「シンプルトリガー(Simple Triggers)」として作成してあり、他の GAS を用いたプログラムのように、実行のためのユーザー確認が必要ありません。
そのため、上記 URL にアクセスして、スプレッドシートをコピーするだけで利用できます。 ※onEdit () をトリガーとして設定しなくてもよい。
(2) 実際のプログラム
スプレッドシートに埋め込んである GAS のプログラムは、以下の通りです。30行余りのプログラムですが、半分くらいはプログラムを説明しているコメントとなっています。
"use strict";
/*****************************************************************************
* onEdit() という関数名であれば、「シンプルトリガー(Simple Triggers)」として、トリ
* ガー設定することなく、自動的に実行される。
* トリガー設定することで実行される「インストール可能なトリガー(Installable triggers)」
* と比べると、以下 URL で説明されているような制限も存在しているが、制限の範囲内であれば
* トリガーを設定することなく実行される。
*
* https://developers.google.com/apps-script/guides/triggers#restrictions
*
* 今回のプログラムは、「シンプルトリガー」として動作する範囲内で処理を行っている。機能を
* 追加するなどした場合には、トリガー設定して「インストール可能なトリガー」として動作させ
* なければならない場合があることに留意すること。
*/
function onEdit(e) {
// 関数の引数として与えられる e については、以下 URL を参照のこと。
// 参考: https://developers.google.com/apps-script/guides/triggers/events
const row = e.range.getRow(); // 編集されたセルの行数を取得
const col = e.range.getColumn(); // 編集されたセルの列数を取得
Logger.log(row + "," + col + "(" + e.user + ") : " + e.value);
if ((row >= 2) && (col >= 3)) { // 2行目以降、3列目以降であれば...
let sheet = e.source.getActiveSheet();
if (sheet.getRange(row, 1).getValue() == "") {
// 1列目に何も記録されていなければ...
sheet.getRange(row, 1).setValue(Utilities.formatDate(new Date, "JST", "yyyy/MM/dd hh:mm:ss"));
sheet.getRange(row, 2).setValue(e.user);
}
}
}
(3) 注意点
上記のプログラム中にもコメントとして記載していますが、機能を追加するなどした場合には、トリガー設定して「インストール可能なトリガー」として動作させなければならない場合があります。
※プログラムをカスタマイズして、機能追加する場合には注意!列 B には、その行に対して変更をおこなったユーザーのメールアドレスが記録されます。Google Workspace for Education の同じ組織内のユーザーで共有している分には問題なく記録されるようですが、組織外の @gmail.com などのユーザーが入力した場合には、メールアドレスが記録できずに空欄になります。
入力されたのが 2行目以降、3列目以降であれば動作するプログラムとなっているため、このスプレッドシート(ファイル)内に追加された別のシートで入力を行っても、「いつ?」「誰が?」が記録されます。
最後に
今回作成したプログラムは、冒頭の Facebook グループへの質問への対応として作成したものですが、このままの状態で利用できるものではないかもしれません。
「どの列に何を入力するか?」など、どのように運用するかを検討してください。
もう少し複雑な判断によって「いつ?」「誰が?」以外の情報を記録する場合には、GAS のプログラムを変更してください。 ※その場合には、「インストール可能なトリガー」として動作させなければならない場合に注意。
といった点にも注意してください。
簡単なプログラムですが、何かの役に立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?