前提
初心者です!あまり知識がないので教えてほしいです!
Googleドライブにすでに保存してある複数のPDFファイルを
GASを使って1つのPDFファイルに結合したいです。
本当に実現したいこととしては、
①スプレットシートに、出力したいフォルダIDと結合後のファイル名を記載して実行したら結合されたPDFファイルが出力される、
というのが理想なのですが、ネットから拾ってきた下記に記載のコードは
②都度フォルダIDとファイル名をダイアログに入力し出力する
という内容になっています。
①は、知識がなさすぎて私には難しいため、
せめて②が実現できればと思っています。
実現したいこと
①スプレットシートに、出力したいフォルダIDと結合後のファイル名を記載して実行したら結合されたPDFファイルが出力される
もしくは
②実行したダイアログにフォルダIDとファイル名を入れるとその通り出力される。
発生している問題・エラーメッセージ
ダイアログで入力したフォルダ名じゃなく、スクリプトで指定したファイル名が出力されてしまう。
エラーは特になし
該当のソースコード
長いので全文のコードはこちらのURLに記載しました。
GAS
1 2--------途中から抜粋----------------- 3 4function merge(){ 5 const FOLDER_ID = 'フォルダID';//フォルダ ID 6 7 //フォルダオブジェクト 8 var folder = DriveApp.getFolderById(FOLDER_ID); 9 //ファイルイテレータリスト 10 var iteratorList = folder.getFiles(); 11 12 //マージするファイルオブジェクトのリスト 13 var pdfList = []; 14 //拡張子チェック 15 var pattern = /.*\.pdf$/; 16 17 while (iteratorList.hasNext()){ 18 var file = iteratorList.next(); 19 if (pattern.test(file.getName())){ 20 pdfList.push(file); 21 } 22 } 23 mergedFile = mergePdfs(folder, "合体したPDFファイル.pdf", pdfList); 24} 25 26function onOpen(){ 27 SpreadsheetApp 28 .getActiveSpreadsheet() 29 .addMenu('mergePDFs', [ 30 {name: 'PDFを結合', functionName: 'diaLog'} 31 ]) 32} 33 34function diaLog() { 35/******************** 36PDFがあるフォルダを指定 37********************/ 38 var srcFolderId = Browser.inputBox("結合したいPDFがあるフォルダを指定してください(FolderID)",Browser.Buttons.OK_CANCEL) 39 //キャンセルが押下されたら終了 40 if (srcFolderId == 'cancel') { 41 return 42 } 43 try { 44 var srcFolder = DriveApp.getFolderById(srcFolderId) 45 } 46 catch(e) { 47 Browser.msgBox('ERROR', srcFolderId + ' is not available', Browser.Buttons.OK) 48 return 49 } 50/******************** 51ファイル名の指定 52********************/ 53 var fileName = Browser.inputBox("結合後のファイル名を指定してください(FolderID)",Browser.Buttons.OK_CANCEL) 54 //キャンセルが押下されたら終了 55 if (fileName == 'cancel') { 56 return 57 } else if (fileName == '') { 58 Browser.msgBox('ERROR', 'File name is not defined', Browser.Buttons.OK) 59 return 60 } 61/******************** 62開始の確認 63********************/ 64 var srcFolderName = srcFolder.getName() 65 66 var result = Browser.msgBox('Confirm', '「' + srcFolderName + '」にあるすべてのPDFを\\n「' + fileName + '」として結合します', Browser.Buttons.OK_CANCEL) 67 if (result == 'cancel') { 68 return 69 } 70 71 try { 72 merge(srcFolderId, fileName) //PDF格納フォルダ,ファイル名 73 } 74 catch(e) { 75 Browser.msgBox('ERROR', 'Error Occurred during merging', Browser.Buttons.OK) 76 return 77 } 78 79 Browser.msgBox('Complete', 'PDFの結合が完了しました', Browser.Buttons.OK) 80}
試したこと
そもそも2つのサイトからスクリプトコードを引っ張ってきて無理やりくっつけているので、
スクリプトに書いてあるファイル名が出力されるのはしょうがないのですが、
試行錯誤しても出来なかったためお力を借りたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

あなたの回答
tips
プレビュー