更新日自動入力機能を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()); } } } }
[トリガー]
(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()); } } } }
"注意点"のところはここでのシート名を表しているので、ここを必要なシート名に適宜変更してください。
[結果]
バッチリ、思った通りの動作となりました。