My Web道

WEB制作科 受講記録 …とその後も続くWEB制作に関する活動・学習記録です。

Google Apps 更新日自動入力

f:id:sntkk3:20190114102859p:plain

更新日自動入力機能をGoogleスプレッドシートに追加

Googleスプレッドシートは、最近仕事でチーム利用することが多くなりました。

今日は、スプレッドシートで管理している表中の値が更新された場合、その更新日を記録したいとのメンバー要望により、該当行に最終更新日が入るスクリプトを設定しました。

スクリプトは下記記事を参考にさせていただいております。

【参考記事】

[超簡単] spreadsheetを更新したら自動で更新日付を入れるGAS - Qiita : http://qiita.com/Yamotty/items/888ae6f93a05a8cfc16f

手順

1. Google スプレッドシートを起動
2. メニューの「ツール」-「スクリプトエディタ」を選択
3. エディタに下記コードを入力
4. トリガーを「値の変更」で設定します。(下図参照)
⇒ これで、値を更新した行にその最終更新日が設定されます。

サンプルスクリプト 紹介

[コード]

function insertLastUpdated() { 
  var ss = SpreadsheetApp.getActiveSheet();  
  var sheet_name = ''; 
  sheet_name = ss.getName(); 
  //Browser.msgBox(sheet_name);   
  var currentRow = ss.getActiveCell().getRow();  
  var currentCell = ss.getActiveCell().getValue();  
  var updateRange = ss.getRange('A' + currentRow) //更新日をいれる列をstringで指定。この場合はA列 
  var str = "注意点" 
  Logger.log(updateRange); 
  //更新日の記入 
  if (str.indexOf(sheet_name) == -1) { 
   if(currentRow>4){  
    if(currentCell) {  
      updateRange.setValue(new Date()); 
    } 
   } 
  } 
} 


[トリガー]
f:id:sntkk3:20170722184744p:plain


(2019/01/14 追記)
補足説明:
上記スクリプトでは、
「注意点」という名前のシート以外で、5行目以下で値が入力・変更された場合、その行のA列に更新日を自動設定するという動作を実現しています。
なので、入力行が5行目より上、あるいは、もっと下の場合、
if(currentRow>4){
の 4の数字を適宜変更してください。

また、更新日時を設定したいシートが複数あるうちの特定のシートのみの場合、
if (str.indexOf(sheet_name) == -1) {
の箇所を書き換えて以下のようなスクリプトにします。

function insertLastUpdated() { 
  var ss = SpreadsheetApp.getActiveSheet();  
  var sheet_name = ''; 
  sheet_name = ss.getName(); 
  //Browser.msgBox(sheet_name);   
  var currentRow = ss.getActiveCell().getRow();  
  var currentCell = ss.getActiveCell().getValue();  
  var updateRange = ss.getRange('A' + currentRow) //更新日をいれる列をstringで指定。この場合はA列 
  var str = "注意点" 
  Logger.log(updateRange); 
  //更新日の記入 
  if (sheet_name === "注意点") { 
   if(currentRow>4){  
    if(currentCell) {  
      updateRange.setValue(new Date()); 
    } 
   } 
  } 
} 

"注意点"のところはここでのシート名を表しているので、ここを必要なシート名に適宜変更してください。


[結果]
バッチリ、思った通りの動作となりました。