###前提・実現したいこと
Googleスプレッドシートでシート毎にPDFに書き出したいです。
現在、開いているページのPDFへの書き出しはできています。
下記サイトを参考にしました。
###該当のソースコード
https://www.virment.com/create-pdf-google-apps-script/
こちらのサイトを参考にしました。
この感じでシート毎にファイルが別れて書き出しができたら嬉しいです。
可能なものでしょうか??
###試したこと
プログラムがあまり詳しくないため試してはいません。。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
この感じでシート毎にファイルが別れて書き出しができたら嬉しいです。
可能なものでしょうか??
可能です。コードとしては以下のようなかんじになるでしょう。シート毎にご提示のサイトの記事で紹介されていたcreatePDF
メソッドを呼び出し、PDFファイルをマイドライブ直下に保存します。
JavaScript
1function testPDF() { 2 try { 3 // マイドライブ直下に保存 4 var root = DriveApp.getRootFolder(); 5 var folderId = root.getId(); 6 7 // 現在開いているスプレッドシートを取得 8 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 9 var ssId = spreadsheet.getId(); 10 var sheets = spreadsheet.getSheets(); 11 12 // シート分PDFに出力 13 for (var i = 0; i < sheets.length; i++) { 14 var sheetId = sheets[i].getSheetId(); 15 var name = sheets[i].getName(); 16 // 拡張子抜きのファイル名を生成 "S[シート番号]_[シート名]" 17 var baseName = "S" + String(i + 1) + "_" + name; 18 // PDFファイルを出力 19 createPDF(folderId, ssId, sheetId, baseName); 20 } 21 } catch (e) { 22 Logger.log("Exception: " + e); 23 } 24}
簡単に書いたコードなので、実際にはファイル名が重複しないようにしたり、フォルダーを指定したりするようになるかと思います。「全シートをシート毎に処理できる」と言うことを示した限りのものです。
プログラムがあまり詳しくないため試してはいません。。。
実際に書いて試してみましょう。ご自分で書いたコードを提示しないとどこが分からないか回答者も分かりませんし、「要望まる投げ」と受け取られて、回答もつきづらくなります。
「どこを修正すべきか?」とのコメントをいただいたので参考に追記します
ご提示のmyFunction
を修正するのであればこのようなコードになるかと思います。PDFファイルはマイドライブ直下に作ります。動作内容をご確認の上、適当に修正してください。
JavaScript
1function myFunction() { 2 try { 3 // マイドライブ直下に保存 4 var root = DriveApp.getRootFolder(); 5 var folderid = root.getId(); 6 7 var ss = SpreadsheetApp.getActiveSpreadsheet(); 8 9 // 現在開いているスプレッドシートのIDを取得 10 var ssId = ss.getId(); 11 12 // ファイル名に使用する名前を取得(スプレッドシートのA1) 13 var customer_name = ss.getRange("A1").getValue(); 14 15 // ファイル名に使用するタイムスタンプを取得 16 var timestamp = getTimestamp(); 17 18 var sheets = ss.getSheets(); 19 20 // シート分PDFに出力 21 for (var i = 0; i < sheets.length; i++) { 22 // シートIDを取得 23 var sheetId = sheets[i].getSheetId(); 24 // シート名を取得 25 var sheetName = sheets[i].getName(); 26 // 拡張子抜きのファイル名を生成 "[A1セルの内容]_[シート名]_[タイムスタンプ]" 27 // var baseName = "S" + String(i + 1) + "_" + name; 28 var baseName = customer_name + "_" + sheetName + "_" + timestamp; 29 // PDFファイルを出力 30 createPDF(folderid, ssId, sheetId, baseName); 31 } 32 } catch (e) { 33 Logger.log("Exception: " + e); 34 } 35}
投稿2017/11/03 04:30
編集2017/11/03 10:30総合スコア9183
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/03 05:21
2017/11/03 05:41
2017/11/03 09:54
2017/11/03 09:57
2017/11/03 10:31
2017/11/03 10:34
2017/11/03 14:30 編集
2017/11/03 15:39 編集
2017/11/03 16:08