回答編集履歴

1

原因は別の箇所だったので回答を追記しました

2020/09/25 00:19

投稿

sawa
sawa

スコア3002

test CHANGED
@@ -17,3 +17,153 @@
17
17
 
18
18
 
19
19
  [https://google-apps-script.net/instructions/?p=1481](https://google-apps-script.net/instructions/?p=1481)
20
+
21
+
22
+
23
+
24
+
25
+ ---
26
+
27
+ 09/25 追記
28
+
29
+
30
+
31
+ ちゃんとにコード見たら、原因は別のところでした。失礼しました。
32
+
33
+
34
+
35
+ `addFile`も廃止と発表されてるけど、試したらエラーにならずに動きますね。
36
+
37
+ でも後々を考えると、moveToに変えておいた方が良いです。
38
+
39
+
40
+
41
+ > Exception: 次のオブジェクトを取得できません。イテレータが末尾に到達しました。(行 46、ファイル「コード」)
42
+
43
+ 行46は「activeFolder.next().addFile(list);」の箇所だと思われます。
44
+
45
+
46
+
47
+ これを、すっかり1つ目の箇所と勘違いしてましたが、エラーが出てくるのは2回目のコードの下の方の部分でしたね。
48
+
49
+
50
+
51
+ `activeFolder.next()` で、フォルダイテレータ(起動しているスプレッドシートが保管されているフォルダの集まり)から、1回目で該当のフォルダを抜き出したのに、もう1回記述してることで、さらにnext(次のもう1個別のフォルダ)を探そうとして、存在しないのでエラーになっています。
52
+
53
+
54
+
55
+ ここを記述1回にして定数でおいてあげれば、エラーは回避されます。
56
+
57
+
58
+
59
+ さらに試したらlistの方は DriveAppで取得しないとエラーになったので、そこの記述も追記しました。
60
+
61
+ 以下の修正箇所って書いたとこを確認、修正して試してみてください。
62
+
63
+
64
+
65
+ ```
66
+
67
+ function createSS() {
68
+
69
+
70
+
71
+ //GAS実行のスプレッドシート
72
+
73
+ var activeSS = SpreadsheetApp.getActiveSpreadsheet();
74
+
75
+
76
+
77
+ //GAS実行のスプレッドシートのシート
78
+
79
+ var activeSheet = activeSS.getActiveSheet();
80
+
81
+
82
+
83
+ //シートのセルを指定(ファイル名用)
84
+
85
+ var range = activeSheet.getRange("C2");
86
+
87
+
88
+
89
+ //シートのセルの値を取得(ファイル名用)
90
+
91
+ var fileName = range.getValue();
92
+
93
+
94
+
95
+ //新規作成のGoogleドキュメントのid
96
+
97
+ var id = DocumentApp.create(fileName).getId();
98
+
99
+
100
+
101
+ //新規作成のGoogleドキュメントのファイル
102
+
103
+ var file = DriveApp.getFileById(id);
104
+
105
+
106
+
107
+ //GAS実行のスプレッドシートのid
108
+
109
+ var activeId = SpreadsheetApp.getActiveSpreadsheet().getId();
110
+
111
+
112
+
113
+ //GAS実行のスプレッドシートのフォルダ
114
+
115
+ var activeFolder = DriveApp.getFileById(activeId).getParents();
116
+
117
+
118
+
119
+ //変更箇所 ここで保存先のフォルダを定義してあげる
120
+
121
+ var Folder = activeFolder.next();
122
+
123
+
124
+
125
+ //変更箇所 Folderを使った記述に
126
+
127
+ file.moveTo(Folder);
128
+
129
+
130
+
131
+ //新規作成したGoogleドキュメントの権限設定
132
+
133
+ var access = DriveApp.Access.ANYONE_WITH_LINK;
134
+
135
+ var permission = DriveApp.Permission.EDIT;
136
+
137
+ file.setSharing(access, permission);
138
+
139
+
140
+
141
+ //新規作成したGoogleドキュメントの共有リンク取得
142
+
143
+ var accessUrl = file.getUrl();
144
+
145
+
146
+
147
+ var list = DocumentApp.create("writer用List");
148
+
149
+ var contents = fileName+"\n"+accessUrl;
150
+
151
+ list.getBody().setText(contents);
152
+
153
+
154
+
155
+ //変更箇所 IDから DriveAppで開きなおす
156
+
157
+ var listid = list.getId();
158
+
159
+ var listfile = DriveApp.getFileById(listid);
160
+
161
+
162
+
163
+ //変更箇所 Folderを使った記述に
164
+
165
+ list.moveTo(Folder);
166
+
167
+ }
168
+
169
+ ```