質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

2339閲覧

Googleドライブに保存してある複数のPDFファイルを1つのファイルに結合したい

eva_mcfly

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/08/22 08:08

編集2022/08/22 08:11

前提

初心者です!あまり知識がないので教えてほしいです!

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問