回答編集履歴

2

解決しました!お騒がせしました。

2022/03/21 05:21

投稿

ienofyan
ienofyan

スコア6

test CHANGED
@@ -6,7 +6,8 @@
6
6
  トリガーに関しても参考URLまでつけていただき、ありがとうございます!
7
7
  参考にさせて頂きます!
8
8
 
9
- 2022.3.21追記
9
+ 2022.3.21追記 【→解決しました。もうしわけありません。原因は、行の最終行の下に行がない状態だと転記先が見つからないためかエラーになったようです。。
10
+ 行を追加して空白の行を作成したら実行完了しました。お騒がせしました。】
10
11
  すみません、少し困った状況になりましたので再度ご質問追加させて頂いております。申し訳ありません。
11
12
  昨日、毎日9:00に実行されるよう以下の通り追加設定し、翌日9:00以降に確認しましたら、エラーとなっていて、転記されていませんでした。。
12
13
  エラー内容は、

1

後日、エラーが発生したので再質問したい。

2022/03/21 03:35

投稿

ienofyan
ienofyan

スコア6

test CHANGED
@@ -6,3 +6,46 @@
6
6
  トリガーに関しても参考URLまでつけていただき、ありがとうございます!
7
7
  参考にさせて頂きます!
8
8
 
9
+ 2022.3.21追記
10
+ すみません、少し困った状況になりましたので再度ご質問追加させて頂いております。申し訳ありません。
11
+ 昨日、毎日9:00に実行されるよう以下の通り追加設定し、翌日9:00以降に確認しましたら、エラーとなっていて、転記されていませんでした。。
12
+ エラー内容は、
13
+ 12:21:01 エラー
14
+ Exception: Invalid argument
15
+ myFunction11 @ 毎日9時に自動転記.gs:9
16
+ でした。
17
+ ※「// 翌日の9:00にトリガーを設定」以降を追加したのみです。ただ、本日改めて追加部分(時間設定部分)を削除し実行させてみたら、同じようにエラーメッセージが出てしまいました。何か触ってしまったかと思い、新しくファイルを作り同じように実行してみましたが、エラーでした。昨日は実行完了になっていたのですが、本日はエラーになったのは何か理由があるのでしょうか。。。
18
+ 設定した内容は以下の通りです。
19
+ function myFunction11() {
20
+ var SS_CopyFrom = SpreadsheetApp.openById("転記元シートID");
21
+ var Sheet_CopyFrom = SS_CopyFrom.getSheetByName('フォームの回答');
22
+ var LrFrom = Sheet_CopyFrom.getRange(Sheet_CopyFrom.getLastRow() + 1, 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
23
+ var LcFrom = Sheet_CopyFrom.getLastColumn();
24
+ var ValuesFrom = Sheet_CopyFrom.getRange(2, 1, LrFrom - 1, LcFrom).getDisplayValues();
25
+ var SS_CopyTo = SpreadsheetApp.openById("転記先シートID");
26
+ var Sheet_CopyTo = SS_CopyTo.getSheetByName('フォームの回答 1');
27
+ var LrTo = Sheet_CopyTo.getRange(Sheet_CopyTo.getLastRow() + 1, 7).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
28
+ var LcTo = Sheet_CopyTo.getLastColumn();
29
+ var ValuesTo = Sheet_CopyTo.getRange(1, 7, LrTo, LcTo).getDisplayValues();//転記先のG列を取得
30
+ var mapTo = ValuesTo.map(e => e[0]);
31
+ var ret = ValuesFrom.filter(e => !(mapTo.includes(e[0])));
32
+ if (!ret || ret.length < 1) return;
33
+ Sheet_CopyTo.getRange(LrTo + 1, 7, ret.length, ret[0].length).setValues(ret);
34
+ }
35
+
36
+ function setTrigger(func_name) {
37
+ // 指定のトリガーがあれば削除する。
38
+ var triggers = ScriptApp.getProjectTriggers();
39
+ for(var i = 0; i < triggers.length; i++) {
40
+ if(triggers[i].getHandlerFunction() == func_name)
41
+ ScriptApp.deleteTrigger(triggers[i]);
42
+ }
43
+
44
+ // 翌日の9:00にトリガーを設定
45
+ var trigger_setTime = new Date();
46
+ trigger_setTime.setDate(trigger_setTime.getDate() + 1);
47
+ trigger_setTime.setHours(9, 0, 0, 0);
48
+ ScriptApp.newTrigger(func_name).timeBased().at(trigger_setTime).create();
49
+ }
50
+
51
+