2023年03月22日 更新
どうも、クラゲジュニアです。
Googleスプレッドシートにて、A1セルにあるチェックボックスにチェックされたら、右隣のセルに本日の日付を記述するケースで説明します。
関数とGAS(Google Apps Script)で検証しました
[TOC]
チェックボックス右隣のセルに以下を記述するだけです。
=if(A1, TODAY(),"")
A1セルがTRUE
の場合はTODAY()
、FALSE
の場合は何も表示しないという処理です。ちなみに時刻まで取得したい場合はNOW()
が使えます。
この記述のデメリットは、久しぶりにスプレッドシートを開いたり、別のデバイスでスプレッドシートを開くと、その時点の日付で上書き更新されてしまうことです。
本日の日付を取得する部分をGASにすることも可能です。
GASに以下を記述
function today_script() {
today = new Date();
return today;
}
チェックボックス右隣のセルに以下を記述
=if(A1, today_script(),"")
ただし、この場合でも結果は同じで、上書き更新されてしまうデメリットは解消されません。
解決策として、スプレッドシートにボタンを作ってボタンが押されたときにスクリプトを実行する処理で代替することも可能ですが、承認が必要となります。承認は設定や管理が煩わしいので避けたいです。
承認せずにスプレッドシートのセルをGASで編集できる方法があります。それは、シンプルトリガーonEdit
を使う方法です。onEdit
はスプレッドシートに変更があると呼ばれる関数で、簡単な処理であれば承認なしに使うことができます。
GASに以下を記述
function onEdit(e) {
if (e.value === 'TRUE') {
today = new Date();
e.range.offset(0, 1).setValue(today);
}
}
offset(0, 1)
は、チェックボックスから行方向に0
列方向に1
ずれた位置、つまり右隣のセルを意味しています。
この方法であれば、久しぶりに開いたり他のデバイスで開いたとしても勝手に更新されることはありません。
以上です。