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

回答編集履歴

2

誤記修正

2021/04/20 22:30

投稿

xail2222
xail2222

スコア1525

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  function notification() {
22
22
  var targetSpreadsheet=SpreadsheetApp.openById("(監視対象のスプレットシートのID)");
23
23
  var targetSheet= targetSpreadsheet.getSheetByName("(監視対象のシート名");
24
- var thisSpreadsheet=SpreadsheetApp.openById(""(自分のスプレットシートのID)");
24
+ var thisSpreadsheet=SpreadsheetApp.openById("(自分のスプレットシートのID)");
25
25
  var thisSheet= thisSpreadsheet.getSheetByName("(自分のシート名");
26
26
  var lastrow = targetSheet.getLastRow();
27
27
  var c17s=targetSheet.getRange(1,17,lastrow,1).getValues();

1

代替案を追記

2021/04/20 22:30

投稿

xail2222
xail2222

スコア1525

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