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

回答編集履歴

1

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

2020/09/25 00:19

投稿

sawa
sawa

スコア3002

answer CHANGED
@@ -7,4 +7,79 @@
7
7
  参考
8
8
  [https://qiita.com/tanaike/items/1d3b2cac43cf5c34e9f7 ](https://qiita.com/tanaike/items/1d3b2cac43cf5c34e9f7)
9
9
 
10
- [https://google-apps-script.net/instructions/?p=1481](https://google-apps-script.net/instructions/?p=1481)
10
+ [https://google-apps-script.net/instructions/?p=1481](https://google-apps-script.net/instructions/?p=1481)
11
+
12
+
13
+ ---
14
+ 09/25 追記
15
+
16
+ ちゃんとにコード見たら、原因は別のところでした。失礼しました。
17
+
18
+ `addFile`も廃止と発表されてるけど、試したらエラーにならずに動きますね。
19
+ でも後々を考えると、moveToに変えておいた方が良いです。
20
+
21
+ > Exception: 次のオブジェクトを取得できません。イテレータが末尾に到達しました。(行 46、ファイル「コード」)
22
+ 行46は「activeFolder.next().addFile(list);」の箇所だと思われます。
23
+
24
+ これを、すっかり1つ目の箇所と勘違いしてましたが、エラーが出てくるのは2回目のコードの下の方の部分でしたね。
25
+
26
+ `activeFolder.next()` で、フォルダイテレータ(起動しているスプレッドシートが保管されているフォルダの集まり)から、1回目で該当のフォルダを抜き出したのに、もう1回記述してることで、さらにnext(次のもう1個別のフォルダ)を探そうとして、存在しないのでエラーになっています。
27
+
28
+ ここを記述1回にして定数でおいてあげれば、エラーは回避されます。
29
+
30
+ さらに試したらlistの方は DriveAppで取得しないとエラーになったので、そこの記述も追記しました。
31
+ 以下の修正箇所って書いたとこを確認、修正して試してみてください。
32
+
33
+ ```
34
+ function createSS() {
35
+
36
+ //GAS実行のスプレッドシート
37
+ var activeSS = SpreadsheetApp.getActiveSpreadsheet();
38
+
39
+ //GAS実行のスプレッドシートのシート
40
+ var activeSheet = activeSS.getActiveSheet();
41
+
42
+ //シートのセルを指定(ファイル名用)
43
+ var range = activeSheet.getRange("C2");
44
+
45
+ //シートのセルの値を取得(ファイル名用)
46
+ var fileName = range.getValue();
47
+
48
+ //新規作成のGoogleドキュメントのid
49
+ var id = DocumentApp.create(fileName).getId();
50
+
51
+ //新規作成のGoogleドキュメントのファイル
52
+ var file = DriveApp.getFileById(id);
53
+
54
+ //GAS実行のスプレッドシートのid
55
+ var activeId = SpreadsheetApp.getActiveSpreadsheet().getId();
56
+
57
+ //GAS実行のスプレッドシートのフォルダ
58
+ var activeFolder = DriveApp.getFileById(activeId).getParents();
59
+
60
+ //変更箇所 ここで保存先のフォルダを定義してあげる
61
+ var Folder = activeFolder.next();
62
+
63
+ //変更箇所 Folderを使った記述に
64
+ file.moveTo(Folder);
65
+
66
+ //新規作成したGoogleドキュメントの権限設定
67
+ var access = DriveApp.Access.ANYONE_WITH_LINK;
68
+ var permission = DriveApp.Permission.EDIT;
69
+ file.setSharing(access, permission);
70
+
71
+ //新規作成したGoogleドキュメントの共有リンク取得
72
+ var accessUrl = file.getUrl();
73
+
74
+ var list = DocumentApp.create("writer用List");
75
+ var contents = fileName+"\n"+accessUrl;
76
+ list.getBody().setText(contents);
77
+
78
+ //変更箇所 IDから DriveAppで開きなおす
79
+ var listid = list.getId();
80
+ var listfile = DriveApp.getFileById(listid);
81
+
82
+ //変更箇所 Folderを使った記述に
83
+ list.moveTo(Folder);
84
+ }
85
+ ```