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

回答編集履歴

1

修正

2019/02/22 07:28

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -1,11 +1,22 @@
1
+ ※全面書きかえしました。t_obara様のご指摘に感謝します
2
+
3
+ 原因は、draftsをループしているカウンタ変数`i`および上限変数`l`と
4
+ 別名(alias)をループしているカウンタ変数`i`および上限変数`l`が同じであることではないでしょうか。
5
+
6
+ 下記概念コードで示しますが、hereのところにあるlは最初のループから「1」が出力され、ループは1回で終端します。
1
7
  ```javascript
8
+ function q175842() {
2
- var mes = drafts[i];
9
+ var limit = 5;
10
+ for(var i = 0, l = limit; i < l; i++) {
11
+ var alius = 1;
12
+ for(var i = 0, l = alius; i < l; i++) {
13
+ Logger.log("inner");
14
+ }
15
+ Logger.log(l); //here
16
+ Logger.log("outer");
17
+ }
18
+ }
3
19
  ```
4
- で取得した`mes`はGmailDraftのはずで、こいつを最後
5
- ```javascript
6
- mes.moveToTrash();
7
- ```
8
- としてますが、moveToTrash()は[GmailThreadのメソッド](https://developers.google.com/apps-script/reference/gmail/gmail-thread)ではあっても[GmailDraft](https://developers.google.com/apps-script/reference/gmail/gmail-draft)にはないので、エラーで処理が中断しているように思いました。
9
- 多分[`deleteDraft()`](https://developers.google.com/apps-script/reference/gmail/gmail-draft#deleteDraft())を使うべき。
10
20
 
21
+ 従って提示コードが上手く動くのは、下書きとaliasが上手く強調している場合のみで
11
- ※ただ、だとしたら、質問者様にスクリプトエラー通知るはずな解せないです
22
+ 例えば下書き3通あとき、上から順にalias指定が3件2件、1件とってる特殊状況です。