実現したいこと
- GoogleDriveの共有ドライブにおいて共有URL一括取得機能を動作するようにする
前提
Drive内のファイル共有用URLを一括取得するScriptを使っています。
マイドライブでは動作するものの、共有ドライブではエラーメッセージが出てしまいます。
共有ドライブを操作するための手続きを検索したところ、
Drive APIの有効化が必要ということでここまでは対応したのですがエラーが解消されず、
対応すべきことをご教示頂けますと幸いです。
発生している問題・エラーメッセージ
下記エラーメッセージが出ます。
Exception: Cannot use this operation on a shared drive item. createSharedUrl @ コード.gs:38
該当のソースコード
javascript
1function createSharedUrl() { 2 //アクティブなシートを取得する 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 var sh = ss.getActiveSheet(); 5 6 //変数folderに指定したフォルダーを格納する 7 //★★★ フォルダーIDを記入 ★★★ 8 var folder = DriveApp.getFolderById("フォルダーID"); 9 10 //フォルダー内の全ファイルを変数folderFilesに格納する 11 //変数folderFiles格納されるデータはイテレーターという形式 12 //※フォルダー直下のファイルのみ格納する 13 var folderFiles = folder.getFiles(); 14 15 //ファイル名を格納するための空の配列を宣言する 16 var allFiles = []; 17 18 //変数folderFilesに格納されている全ファイルのファイル名と 19 //共有リンクを配列allFilesに二次元配列で格納する 20 while(folderFiles.hasNext()) { 21 //配列allFilesに追加する配列(ファイル名と共有リンク)を 22 //ループ中に一時的に格納するための空の配列tempFileを宣言する 23 var tempFile = []; 24 25 //変数folderFilesからファイルのイテレーターをひとつ取り出し 26 //変数fileIteratorに格納する 27 var fileIterator = folderFiles.next(); 28 29 //ファイル名を取得する 30 var fileName = fileIterator.getName(); 31 32 //ファイルIDを取得し、ファイルIDをもとにファイルを 33 //指定し変数fileに格納する 34 var fileId = fileIterator.getId(); 35 var file = DriveApp.getFileById(fileId); 36 37 //変数fileの共有設定を「リンクを知っている全員が閲覧化」に変更する 38 file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); 39 40 //共有リンクを変数shareUrlに格納する 41 var shareUrl = file.getUrl(); 42 43 //配列tempFileにファイル名と共有リンクを格納する 44 //この時点で配列tempFileは以下のようになっている 45 //tempFile = [ファイル名, 共有リンク] 46 tempFile.push(fileName); 47 tempFile.push(shareUrl); 48 49 //配列tempFileを配列allFilesに格納する 50 //配列の中に配列を入れるのでallFilesは 51 //以下のような二次元配列になる 52 //allFiles = [[ファイル名1, 共有リンク1],[ファイル名2,共有リンク2],....] 53 allFiles.push(tempFile); 54 } 55 56 //配列allFiles内の要素数、つまり必要な行数を確認する 57 var numRow = allFiles.length; 58 59 //配列allFiles内の一つ目レコードの要素数、つまり必要な列数を確認する 60 //今回はレコードの要素は「ファイル名」と「共有リンク」なので2になる 61 var numCol = allFiles[0].length; 62 63 //アクティブなシートの2行目にペースト 64 sh.getRange(2,1, numRow, numCol).setValues(allFiles);
試したこと
Drive APIの有効化

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/17 04:31
2023/02/17 04:55