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

質問編集履歴

1

コード全体を追記させていただきました。59行目にてエラーが出ています。

2023/12/07 06:11

投稿

minako_151
minako_151

スコア1

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,70 @@
17
17
  ### 該当のソースコード
18
18
 
19
19
  ```ここに言語名を入力
20
+ function createSharedUrl() {
21
+ //アクティブなシートを取得する
22
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
23
+ var sh = ss.getActiveSheet();
24
+
25
+ //変数folderに指定したフォルダーを格納する
26
+ //★★★ フォルダーIDを記入 ★★★
27
+ var folder = DriveApp.getFolderById('1_MK3Yoi1lToxydTJf7UBTNPRiALAv2wz');
28
+
29
+ //フォルダー内の全ファイルを変数folderFilesに格納する
30
+ //変数folderFiles格納されるデータはイテレーターという形式
31
+ //※フォルダー直下のファイルのみ格納する
32
+ var folderFiles = folder.getFiles();
33
+
34
+ //ファイル名を格納するための空の配列を宣言する
35
+ var allFiles = [];
36
+
37
+ //変数folderFilesに格納されている全ファイルのファイル名と
38
+ //共有リンクを配列allFilesに二次元配列で格納する
39
+ while(folderFiles.hasNext()) {
40
+ //配列allFilesに追加する配列(ファイル名と共有リンク)を
41
+ //ループ中に一時的に格納するための空の配列tempFileを宣言する
42
+ var tempFile = [];
43
+
44
+ //変数folderFilesからファイルのイテレーターをひとつ取り出し
45
+ //変数fileIteratorに格納する
46
+ var fileIterator = folderFiles.next();
47
+
48
+ //ファイル名を取得する
49
+ var fileName = fileIterator.getName();
50
+
51
+ //ファイルIDを取得し、ファイルIDをもとにファイルを
52
+ //指定し変数fileに格納する
53
+ var fileId = fileIterator.getId();
54
+ var file = DriveApp.getFileById(fileId);
55
+
56
+ //変数fileの共有設定を「リンクを知っている全員が閲覧化」に変更する
57
+ file.setSharing(DriveApp.Access.DOMAIN_WITH_LINK, DriveApp.Permission.VIEW);
58
+
59
+ //共有リンクを変数shareUrlに格納する
60
+ var shareUrl = file.getUrl();
61
+
62
+ //配列tempFileにファイル名と共有リンクを格納する
63
+ //この時点で配列tempFileは以下のようになっている
64
+ //tempFile = [ファイル名, 共有リンク] tempFile.push(fileName);
65
+ tempFile.push(shareUrl);
66
+
67
+ //配列tempFileを配列allFilesに格納する
68
+ //配列の中に配列を入れるのでallFilesは
69
+ //以下のような二次元配列になる
70
+ //allFiles = [[ファイル名1, 共有リンク1],[ファイル名2,共有リンク2],….] allFiles.push(tempFile);
71
+ }
72
+
73
+ //配列allFiles内の要素数、つまり必要な行数を確認する
74
+ var numRow = allFiles.length;
75
+
76
+ //配列allFiles内の一つ目レコードの要素数、つまり必要な列数を確認する
77
+ //今回はレコードの要素は「ファイル名」と「共有リンク」なので2になる
20
78
  var numCol = allFiles[0].length;
79
+
80
+ //アクティブなシートの2行目にペースト
81
+ sh.getRange(2,1, numRow, numCol).setValues(allFiles);
82
+ }
21
83
  ```
84
+ ### 調査したこと
85
+ エラーについて調べてみましたが、該当するような記事を見つけることができませんでしたので質問させてください。
22
86