回答編集履歴

1

別な書き方を加えました

2024/06/08 06:37

投稿

atlanticSalmon
atlanticSalmon

スコア89

test CHANGED
@@ -35,7 +35,7 @@
35
35
  ```js
36
36
  // この関数をシートの「編集時」のトリガーに設定していることが前提
37
37
  function myFunction(e) {
38
- // シートにCSVを貼り付けるなどセルの編集があったか確認
38
+ // シートにCSVを貼り付けるなどセルの編集があったか確認
39
39
  if (e) { // トリガー起動のとき
40
40
  if (e.range.getSheet().getName() === 'シート2') { // シート2が編集されたとき
41
41
  // シート1のA1セルに更新時の日時を記入
@@ -49,3 +49,29 @@
49
49
  }
50
50
  }
51
51
  ```
52
+
53
+ 可能な限りの再利用ということでしたが、
54
+ 実際には、トリガーを設定せずに(削除した上で)、
55
+ 関数名を変更して
56
+ function myFunction(e) {
57
+
58
+ function onEdit(e) {
59
+ とすることでもセルの編集時に起動するようになります。
60
+ 例えば次のように書くことができます。
61
+ ```js
62
+ // この関数はトリガーを設定する必要がない(関数名が簡易なトリガー)
63
+ function onEdit(e) {
64
+ // シートにCSVを貼り付けるなどセルの編集があったか確認
65
+ if (e) { // 簡易なトリガー起動のとき
66
+ if (e.range.getSheet().getName() === 'シート2') { // シート2が編集されたとき
67
+ // シート1のA1セルに更新時の日時を記入
68
+ e.source // 編集されたセルを含むスプレッドシート全体を受け取る
69
+ .getSheetByName('シート1') // シート1という名前のシートを取得
70
+ .getRange('A1')
71
+ .setValue(
72
+ '更新: ' + Utilities.formatDate(new Date(), 'JST', 'MM/dd HH:mm')
73
+ )
74
+ }
75
+ }
76
+ }
77
+ ```