teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

a

2019/11/04 16:28

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -1,21 +1,20 @@
1
- 今回の要件は"編集時"の"トリガー"で作ります(必ず更新していい要件なら関数でもできなくはなさそう。ただその場合、スプレッドシートを開き直したときも日付が更新されるので本当にそれでいいかは仕様を確認する必要があります)
2
1
  これだと全てのシートで動作するので、適宜シート名を見て判定する処理を入れてください。
3
2
 
4
3
  ```javascript
5
4
  function onEdit(e) {
5
+ const sourceRange = e.range;
6
- const c = e.range.getColumn();
6
+ const c = sourceRange.getColumn();
7
7
  if (c !== 3) {
8
8
  return;
9
9
  }
10
- const r = e.range.getRow();
10
+ const r = sourceRange.getRow();
11
11
  if (r < 10 || r > 309) {
12
12
  return;
13
13
  }
14
14
  const targetRange = e.range.offset(0, 1);
15
- if (typeof e.value === 'undefined') {
15
+ const dat = sourceRange.getValues().map(function (r) {
16
- targetRange.clearContent();
16
+ return r[0] === "" ? [""] : [new Date()];
17
- return;
18
- }
17
+ });
19
- targetRange.setValue(new Date());
18
+ targetRange.setValues(dat);
20
19
  }
21
20
  ```

1

2019/11/04 16:28

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  return;
13
13
  }
14
14
  const targetRange = e.range.offset(0, 1);
15
- if (typeof e.value !== 'undefined') {
15
+ if (typeof e.value === 'undefined') {
16
16
  targetRange.clearContent();
17
17
  return;
18
18
  }