前提・実現したいこと
#Googleスプレッドシートで自動的に更新されない「タイムスタンプ関数」を自作したい
当方初心者です。
Googleスプレッドシートを使用して業務実施のチェックリストを作成しています。
その中に「実施完了報告」のチェックBOXやプルダウンリストを置いてそこに記入が入った時刻を記録できるようにしたいのです。
書式の中に複数のチェックBOXがあり場所によって隣や下のセルに時刻が出るようにしたいのでネットで調べて(自作関数?の)【TIMESTAMP】をスクリプトエディタに登録して以下の挙動になるようにしました。
- 指定したチェックBOXにチェックを入れる、又はプルダウンリストから選択したテキストが表示されると入力した時刻が隣(又は下)の指定のセルに表示されるようにする。
- タイムスタンプを表示させたいセルに関数と組み合わせて書いています。
[例]「E25でプルダウンリストからテキストを選択」し表示させたら「F25に時刻を表示」させたいときは
「F25のセル」に【=if(istext(E25)=true,timestamp(),"")】としています。
しかしこれで記録すると一旦スプレッドシートを閉じて再度開いたときに関数を設置したセルに「loading」の表示が出て(出ないこともあります)、そのあとでタイムスタンプを入れた全てのセルの日時が勝手に更新されてしまうことがありました。
業務完了の日時を記録したいので後から開いても確実に【自動的に更新されない】タイムスタンプにしたいのですが、現状は「勝手に更新されたり」「されなかったり」と不安定な挙動で困っています。どうかお知恵をお貸しください。
(下記のコードはネットから参照したものなので中身の意味はよくわかっていない初心者です。。。)
該当のソースコード
function onEdit(e) { var r = e.range.getRow(); var c = e.range.getColumn(); e.range.getSheet().getRange(r, c+1).setValue(getCurrentTime()); } function TIMESTAMP() { var today = new Date(); var date = (today.getMonth()+1)+'-'+today.getDate()+'-'+today.getFullYear(); var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds(); var dateTime = date+' '+time; return dateTime; }
試したこと
トリガーを設定したら更新されなくなるかと思いトリガーを「編集時」「変更時」それぞれにして試してみましたが、どちらでやっても一時更新されなくなる感じになったのですが時間をおいて再度シートを開くと結局タイムスタンプが上書きされてしまいました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/07 13:33
2020/12/07 14:06
2020/12/07 14:06
2020/12/07 14:13
2020/12/07 14:14
2020/12/07 14:16
2020/12/08 00:36
2020/12/08 04:40
2020/12/08 07:31 編集
2020/12/08 07:41