回答編集履歴

2

誤記修正

2021/04/20 22:30

投稿

xail2222
xail2222

スコア1508

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  var targetSheet= targetSpreadsheet.getSheetByName("(監視対象のシート名");
46
46
 
47
- var thisSpreadsheet=SpreadsheetApp.openById(""(自分のスプレットシートのID)");
47
+ var thisSpreadsheet=SpreadsheetApp.openById("(自分のスプレットシートのID)");
48
48
 
49
49
  var thisSheet= thisSpreadsheet.getSheetByName("(自分のシート名");
50
50
 

1

代替案を追記

2021/04/20 22:30

投稿

xail2222
xail2222

スコア1508

test CHANGED
@@ -5,3 +5,77 @@
5
5
 
6
6
 
7
7
  実行結果はありますか?あればログ内容はどうなっていますか?
8
+
9
+
10
+
11
+ (追記)
12
+
13
+ 今の処理が動かない理由は不明ですが、今の処理は不完全な部分もあるため
14
+
15
+ ちゃんと動かないスプレットシートの関数として実行するのをあきらめて
16
+
17
+ 以下の処理を自分のスプレットシートの関数として定義し、それを時間起動型
18
+
19
+ (時間はレスポンスが欲しい適当な時間で)で実行させるのは如何でしょうか。
20
+
21
+
22
+
23
+ 内容は
24
+
25
+ 監視対象のスプレットシートのQ列の内容を、自分のスプレットシートのQ列の内容と比較
26
+
27
+ 違っていれば、監視対象のデータを自分のスプレットシートにコピーした後にメールを行う
28
+
29
+
30
+
31
+ というものです。
32
+
33
+ これであれば複数列の修正にも対応できているので、こちらの方が良いのではないでしょうか。
34
+
35
+ 以下にサンプルコードを提示します。これでどうでしょうか。
36
+
37
+
38
+
39
+ ```GAS
40
+
41
+ function notification() {
42
+
43
+ var targetSpreadsheet=SpreadsheetApp.openById("(監視対象のスプレットシートのID)");
44
+
45
+ var targetSheet= targetSpreadsheet.getSheetByName("(監視対象のシート名");
46
+
47
+ var thisSpreadsheet=SpreadsheetApp.openById(""(自分のスプレットシートのID)");
48
+
49
+ var thisSheet= thisSpreadsheet.getSheetByName("(自分のシート名");
50
+
51
+ var lastrow = targetSheet.getLastRow();
52
+
53
+ var c17s=targetSheet.getRange(1,17,lastrow,1).getValues();
54
+
55
+ var c17s2=thisSheet.getRange(1,17,lastrow,1).getValues();
56
+
57
+
58
+
59
+ for (let i = 0; i < c6s.length; i++) {
60
+
61
+ if (c17s[i].toString() != c17s2[i].toString() ){
62
+
63
+ console.log('違う');
64
+
65
+ thisSheet.getRange(1,17,lastrow,1).setValues(c17s)
66
+
67
+ //ここでメール
68
+
69
+ break
70
+
71
+ }
72
+
73
+ }
74
+
75
+ }
76
+
77
+ ```
78
+
79
+ toString()で文字列化して比較しているのは日時データを生のまま比較すると
80
+
81
+ 常に違う判定に私がテストした際にはなった為です。