実現したいこと
スプレッドシートの表の中で 列C に書き込みを行うと 列B に自動で指定された形式の日時が入るスクリプトエディタを組みたいと考えています。(C列の3列目以降に入力があると、B列の3行目以降に形式を指定された日時を自動入力→B列が空白の場合のみ)
※ただエラーがでているだけなのか?と思いトリガーを組んでみましたが発動しませんでした。
発生している問題・分からないこと
他のシートでは正常に動作しているのですが、保存後に実行をしてもエラーが表示されてしまい正常に動作しません。
エラーメッセージ
error
1TypeError: Cannot read properties of undefined (reading 'range') 2onEdit @ コード.gs:5
該当のソースコード
function onEdit(e) { const ws = "タイムカード" let row = e.range.getRow() let col = e.range.getColumn() let currnetDate = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mmam/pm'); Logger.log(date); //現在の日時 if (row >= 3 && col == 3 && e.source.getActiveSheet().getName() === ws) { //シートがwsでかつ1列目で2行目以降か? e.source.getActiveSheet().getRange(row, 2).setValue(currnetDate) if (e.source.getActiveSheet().getRange(row, 2).getValue() === "") { //Date Enterdが空のとき e.source.getActiveSheet().getRange(row, 2).setValue(currnetDate) //Date Enterdに日時を入れる } } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
下記のサイトを元に今までは「let currnetDate = new Date() //現在の日時」のみでおこなっていたのですが、形式を「2024/05/30 11:30am」のような形式に固定したくて追加してみました。
ですが変更したものでも、元に戻したものでもエラーが出てしまいます。
https://qiita.com/rf_p/items/ff841885ef6346afe5d4
補足
function onEdit(e) {
const ws = "タイムカード"
let row = e.range.getRow()
let col = e.range.getColumn()
let currnetDate = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mmam/pm');
Logger.log(date); //現在の日時
if (row >= 3 && col == 3 && e.source.getActiveSheet().getName() === ws) { //シートがwsでかつ1列目で2行目以降か?
e.source.getActiveSheet().getRange(row, 2).setValue(currnetDate)
if (e.source.getActiveSheet().getRange(row, 2).getValue() === "") { //Date Enterdが空のとき
e.source.getActiveSheet().getRange(row, 2).setValue(currnetDate) //Date Enterdに日時を入れる
}
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/05/30 09:58
2024/05/30 10:04
2024/05/30 10:39