スプレッドシートが更新されたら日付をGASで行ごとに自動入力する

スプレッドシートを使ってWBSのようなものを作成してプロジェクトメンバーの複数名で更新を行っているような使い方をしていると、誰かがどこかの行を編集したということがわかりやすくなっていると便利になります。

今回は、スプレッドシートが更新された時に、更新された行の任意の列に自動的に最終更新日が記録されるようにする方法について解説していきます。

○関連記事

【初心者向け】GAS(GoogleAppsScript)とは?読み方は?何が開発できる?

今回のアウトプット

スプレッドシート

https://docs.google.com/spreadsheets/d/1vVcmf6KbEOx6I6_OCmNN2bqOmCiPNVnjniQjOoL-iBM/edit#gid=0

ご覧の通り、今回は

A列・・・タスク名

B列・・・進捗(ステータス)

C列・・・最終更新日

の構成となっています。

A列もしくはB列が更新されたら、C列に最終更新日が記録されます。

上記スプレッドシートは編集権を限定しておりますので、利用になる場合はコピーしてお使いください。

スクリプトエディタ

https://script.google.com/macros/d/1A3KjUyCKXs-bLslIQNDTQTlBytg7o9oQZjLlRtQLk66pLTsNLKd0u9V4/edit

解説

スプレッドシート

スプレッドシートには特に仕掛けはありません。

スクリプトエディタ

スクリプトエディタには、スプレッドシートに紐付けて作成されたものと、紐付けられずに独立して作成されたものの2タイプがありますが、今回は前者の紐づけられたタイプです。

まずはコードを確認しましょう。

function set_last_update() {

var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var activerange=sh.getActiveRange();

var activerow=activerange.getRow();

sh.getRange(activerow, 3).setValue(new Date());

}

また、今回はトリガーを「スプレッドシートから」「編集時」に設定しています。

この設定により、スプレッドシートになんらかの編集がされるごとに「function set_last_update()」が実行されるようになります。

コード中の

var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

var activerange=sh.getActiveRange();

の部分で、「アクティブなシート」、すなわち編集されたセルが所属するシートと、「アクティブなセル」、すなわち編集されたセルを取得しています。

また、

var activerow=activerange.getRow();

によって、アクティブなセルの行番号、つまり何行目が編集されたのかを取得しています。

最後に、

sh.getRange(activerow, 3).setValue(new Date());

によって、アクティブなセルの行番号の3列目、すなわち編集された行のC列にその時点の日付が入力されるようになります。

まとめ

以上が、スプレッドシートの行ごとの最終更新日をGASを使って自動で入力する方法のまとめです。他にも、編集したユーザーのgmailアドレスを取得して記録させたり、行単位ではなくセル単位で情報を記録することもできます。これらについては、発展版としてまたの機会とさせていただきます。

関連記事

スプレッドシートに日付を自動入力する方法4選

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter で生産性総合研究所をフォローしよう!