スプレッドシートを利用していると、特定のセルに日付を自動入力して欲しいことが良くありますよね。今回は、スプレッドシートに日付を自動入力する方法をいくつかのパターン別に紹介していきます。
Contents
1.スプレッドシートを開いたときに日付を自動入力する
まず始めに、スプレッドシートを開いたとき、すなわち起動時に、そのスプレッドシートの任意のセルに日付を入力する方法を紹介します。
アウトプットイメージ
スプレッドシート
https://docs.google.com/spreadsheets/d/10OZGNQwVqUZenuDL3K8Mz5NBaaDOQ1fW7Wz9w9yMeWM/edit#gid=0
ご覧の通り、今回は
B1セルに最終閲覧時刻が表示されるようになっています。
このスプレッドシートが起動したら、B1セルに最終更新日が記録されます。
上記スプレッドシートは編集権を限定しておりますので、利用になる場合はコピーしてお使いください。
スクリプトエディタ
https://script.google.com/d/Mr6q_w76mdDXm-CR3A2dWNPPWgzBTpm2W/edit
解説
スプレッドシート
スプレッドシートには特に仕掛けはありません。
スクリプトエディタ
スクリプトエディタには、スプレッドシートに紐付けて作成されたものと、紐付けられずに独立して作成されたものの2タイプがありますが、今回は前者の紐づけられたタイプです。
まずはコードを確認しましょう。
function onOpen() {
var sh =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var daterange = sh.getRange(1, 2);
var newdate = new Date();
daterange.setValue(newdate);
}
まず始めに、
var sh =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
の部分では、「sh」という変数を用意し、現在アクティブなスプレッドシートのうちのアクティブなシートを代入しています。ここで言う「アクティブ」とは、「起動されている」「使用されている」くらいの意味と思っておけば良いと思われます。
その後、
var daterange = sh.getRange(1, 2);
の部分では、「daterange」という変数を用意し、1行目2列目のセル、すなわちB1セルを代入しています。
また、最後の
var newdate = new Date();
daterange.setValue(newdate);
の部分で、先ほど用意したdaterangeに、プログラム実行時点の日付(new Date())を貼り付けています。
2.どこかのセルが更新されたらそのセルにコメントを付ける
アウトプットイメージ
スプレッドシート
https://docs.google.com/spreadsheets/d/1L6pqd0piL5_jn3jYopg_J_3B3Izpvs674bLUTQk4Rb8/edit#gid=0
A1:B3までに適当にデータを入力してありますが、各セルには更新された日時が記載されています。
上記スプレッドシートは編集権を限定しておりますので、利用になる場合はコピーしてお使いください。
スクリプトエディタ
https://script.google.com/d/MW0mHKCbvaBQfv-Z_VUlCg1-L80s2sBMi/edit?
解説
スプレッドシート
スプレッドシートには特に仕掛けはありません。
スクリプトエディタ
スクリプトエディタには、スプレッドシートに紐付けて作成されたものと、紐付けられずに独立して作成されたものの2タイプがありますが、今回は前者の紐づけられたタイプです。
まずはコードを確認しましょう。
function onEdit() {
var sh =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var activerange = sh.getActiveRange();
var newdate = Utilities.formatDate(new Date(), “JST”, “YYYY/MM/dd HH:mm:ss”);
activerange.setNote(newdate);
}
まず始めに、
var sh =SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
の部分では、「sh」という変数を用意し、現在アクティブなスプレッドシートのうちのアクティブなシートを代入しています。ここで言う「アクティブ」とは、「起動されている」「使用されている」くらいの意味と思っておけば良いと思われます。
その後、
var activerange = sh.getActiveRange();
の部分では、「activerange」という変数を用意し、プログラム実行時点でアクティブなセル、すなわち選択されているセルを格納しています。
また、
var newdate = Utilities.formatDate(new Date(), “JST”, “YYYY/MM/dd HH:mm:ss”);
の部分では、プログラム実行時点の日付(new Date())の形式を整え、日本時間に設定します。
最後に、
activerange.setNote(newdate);
の部分で、先ほど用意したactiverangeに、プログラム実行時点の日付(new Date())をコメントしています。
3.どこかのセルが更新されたらその行に自動入力する
アウトプットイメージ
スプレッドシート
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
解説
別途解説記事を執筆致しましたので、そちらを参照ください。
4.関数を用いてGoogleスプレッドシートに自動更新される日付を入力する
解説
別途解説記事を執筆致しましたので、そちらを参照ください。
まとめ
以上が、スプレッドシートに日付を自動入力する方法3選になります。
日付を入れる、という作業は1回あたりで見れば大した工数ではありませんが、頻繁に行われる作業であるため、積み重ねにより無視できない大きさとなりえます。
また、日付という情報はスケジュール管理などで重要になり、ミスがないようすることが必要であることから、自動化することの意義は大いにあると考えられます。
今回に紹介した方法を活かし、皆様が効率的に作業が進められるようになれば幸いです。