Spread Sheet でGoogle Apps Script

Google Document の Spread Sheetで使える、Google Apps Scriptを使ってみた。

https://developers.google.com/apps-script/?hl=ja

Google Apps Scriptは、その気になればスプレッドシートだけでなく、Gmail、Googleカレンダー、Googleマップ等、Googleが提供するサービスを処理することが出来る使いこなしたら超便利なスクリプトらしい。

先ずは手始めに、スプレッドシートに独自関数の追加というのをやってみる。

エクセルのマクロはあまり使ったことが無いんだけど、最近ではプロジェクト管理にスプレッドシートを使うことも少なくない。

そんな時にあると便利なのが、更新日時・時刻の自動記入。

サンプルを作ってみた。

https://docs.google.com/spreadsheets/d/1kj6K_lvbfoq_MwgvR0doE36IzoK16t8YtwVJuTce8T4/edit?usp=sharing

ソースは以下。

これを、tools -> edit script で開くエディタで編集する。

簡単に解説すると、2,3列目の編集したらテーブルの最後の列に日付が出るよ、という単純なもの。


function onEdit(event){

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var actSht = event.source.getActiveSheet();
  var actRng = event.source.getActiveRange();

  var activeCell = actSht.getActiveCell();
  var row = activeCell.getRow();
  var column = activeCell.getColumn();

  if(row < 2)   return; //ヘッダーの行ならreturn
  var colNums  = [2,3]; //2,3列目を対象に
  if(colNums.indexOf(column) == -1) return; //colNumsで設定した列以外なら終了


  var index = actRng.getRowIndex();
  var dateCol = actSht.getLastColumn();
  var lastCell = actSht.getRange(index,dateCol); //テーブルの最後の列を自動取得するみたい。この場合はupdateの列
  var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");

  // lastCellに日付をセット。
  lastCell.setValue(date);

}

javascriptに慣れているなら、とても馴染みやすい言語だと感じました。

覚えておくとかなり使い方が広がりそうなので、また何かあったらメモしようと思います。