スプレッドシートで自動的にログを集計する方法【基本編】
Googleスプレッドシートで日々の活動結果を管理していて、活動結果の集計を自動で集計できるようにしたいと思ったことはありませんか?
今回は、GoogleAppScriptを使ってログを自動集計する方法を、画面キャプチャ付きで説明します。
GoogleAppScriptを起動
スプレッドシートの変更をログとして残すには、GoogleAppScriptを介する必要があります。
前準備として、GoogleAppScript(GAS)の起動方法を解説します。
まずは、GoogleSpreadSheet(以降スプレッドシート)を作成して、以下のように「リスト」と「ログ」という2つのシートを作成してください。
<リスト>
実際に変更するシートです
<ログ>
集計ログを残すシートです
次に、スプレッドシートの「ツール」メニューから「スクリプトエディタ」を開きましょう。
ここまでで、スクリプトを作成する画面までたどり着きました。続けて、スクリプトを実際に作成してみましょう。
GoogleAppScriptでスクリプト作成
GoogleAppScript(GAS)にてスクリプトを作成する方法を説明します。
今回は、「仕事の進捗」が変更されたら<ログ>シートに変更記録を自動で残すメソッド「createlog」を作りました。
変更されたセルがD列=「仕事の進捗」なら、その行のデータを返すという仕様です。
以下が完成形のスクリプトです。
function createlog() {
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName('リスト');//セルに変更があるシート名を記入(変更するシート「リスト」)
var sheet2 = ss.getSheetByName('ログ');//ログを残すシート名を記入(今回は「ログ」というシート)
//各シートを定義付け
var myCell = sheet1.getActiveCell();
if(myCell.getColumn() == 4){
var rowNum = myCell.getRow();
var s1 = sheet1.getRange("a"+rowNum).getValue();//a列のデータを取得
var s2 = sheet1.getRange("b"+rowNum).getValue();//b列のデータを取得
var s3 = sheet1.getRange("c"+rowNum).getValue();//c列のデータを取得
var s4 = sheet1.getRange("d"+rowNum).getValue();//d列のデータを取得
const columnBVals = sheet2.getRange('A:A').getValues();
const LastRow = columnBVals.filter(String).length;//A列の最終行を行数として取得
for(var i = LastRow+1; i <= LastRow+1; i++) { //最終行+1行を選択
sheet2.getRange(i,1).setValue(s1);//a列のデータをログシートのa列に入力
sheet2.getRange(i,2).setValue(s2);//b列のデータをログシートのb列に入力
sheet2.getRange(i,3).setValue(s3);//c列のデータをログシートのc列に入力
sheet2.getRange(i,4).setValue(s4);//d列のデータをログシートのd列に入力
}}}
完成形スクリプトをコピペで「スクリプトエディタ」に入力しましょう。
入力したら保存を押します。
今回のスクリプトエディタのタイトルを入力して、スクリプト作成は終了です。
指定のセルが変更された際にスクリプトが実行する設定
スクリプトが完成したので、次は、D列が変更された場合にスクリプトを実行する設定を行います。
「編集」メニューの中にある「現在のプロジェクトのトリガー」を選びましょう。
次に、新しいトリガー追加を押してください。
すると、「ダイアログ」がでてくるので、そこで以下のように設定してください。
保存を押したあとに、順番に赤く示したところをクリックしていけば、無事にスクリプトが動くようになります。
ここまでの手順は、スクリプトを最初に動かすときのみ必要です。
ここまで進むと、設定は完了です。実際に「リスト」のD列を変更してみましょう。
※完成版の動画はこちら
最後に
今回のスクリプトの解説や応用は、以下記事から見ていただければと思います。下のようなことが気になる場合は、参考にしてみてください。
・自分の今管理しているスプレッドシートに置き換えたい
・D列ではなく、他の列の変更時にログが残るようにしたい
・残したログってどうやって集計するのかわからない
この記事が気に入ったらサポートをしてみませんか?