LANG SELRCT

コードを書く場所についてはこちら

2016年6月23日木曜日

編集した日時を自動で入力する

シートを編集した日時を知るには、ファイルメニューの変更履歴の表示を見ることで確認することもできますが、わざわざそれを開かずに、常にシート上に表示して見えるようにしておきたいと思い、Google Apps Scriptを使って書いてみたコードです。

A列の任意のセルを編集した時、B列に自動で編集した日時を入力するということをやっています。
※日時を入力する列にすでにデータが入っている場合は上書きされるので、データが入っていない列を指定して下さい。



ポイント

1. A列が編集されたら、B列に編集した日時を入力する。
  if(col == 1){
    var date = new Date();
    sh.getRange(row, 2).setValue(date);
  }



コード.gs
function onEdit() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    var range = sh.getActiveRange();
    var row = range.getRow();
    var col = range.getColumn();
 
  if(col == 1){
    var date = new Date();
    sh.getRange(row, 2).setValue(date);
  }
}



A列を編集すると、B列に編集した日時が入力されます。

再度同じA列のセルを編集すると、B列の日時が更新されます。



if文を消すと、どの行を編集してもB列に編集日時が更新されるようになります。

コード.gs
function onEdit() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    var range = sh.getActiveRange();
    var row = range.getRow();
    var col = range.getColumn();
 
  //if(col == 1){
    var date = new Date();
    sh.getRange(row, 2).setValue(date);
  //}
}



指定したシートの指定した行以降のセルが編集された時に実行する

上の例では一行目を編集すると常にB列に日付の更新が入るため、一行目をヘッダにしている場合は二行目からを対象にしたいと思うはず。
そして複数のシートがある場合は、B列を自動で更新されたくないシートもあるはず。
ということで、指定したシートの2行目以降のセルが編集されたら、B列に更新日時を自動入力するというコードも書いてみました。

コード.gs
function onEdit() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet();
    var sh_id = sh.getSheetId();
    var range = sh.getActiveRange();
    var row = range.getRow();
    if (sh_id == 0) {
        if (row > 1) {
            var date = new Date();
            sh.getRange(row, 2).setValue(date);
        }
    }
}