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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Q&A

1回答

734閲覧

GASでデータを転記したスプレッドシートをPDFで保存

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

0グッド

0クリップ

投稿2018/06/18 06:46

前提・実現したいこと

領収書の自動化を試みています。
データ一覧にある名前・金額などを転記してフォーマットをもとに新しいシートをつくるところまではできました。これを最後にPDFにしてドライブに保存されるようにしたいのですが、そのやり方が分かりません。

発生している問題・エラーメッセージ

新しくコピーして作ったシートのIDなどを呼び出す方法が分からず、以下のようなメッセージが出ています。

TypeError: undefined のメソッド「getSheetId」を呼び出せません。(行 24、ファイル「コピー ~ コード」)

該当のソースコード

ここまでは問題ないと思います。

GAS

1function createReceipt() { 2 var template = SpreadsheetApp.openById('*************');//実際には入力してます 3 var sheet1 = SpreadsheetApp.getActiveSheet(); 4 5 for(var i = 2; i <= 9; i++) { 6 7 //データの作成 8 var name = sheet1.getRange(i, 2).getValue() ; //会社名 9 10 var amount = sheet1.getRange(i, 3).getValue(); //個数 11 12 //ひな型をコピー 13 var ssName = '20180620_領収書' + name + '御中'; 14 var sheet = template.copy(ssName).getSheetByName('領収書'); 15 16 //データを転記 17 sheet.getRange('A5').setValue(name); 18 sheet.getRange('H21').setValue(amount); 19

ここからが分かりません。

// シート分PDFに出力 for(var i = 2; i <= 9; i++) { // シートIDを取得 var sheetId = sheet[i].getSheetId(); // シート名を取得 var sheetName = sheet[i].getName(); // 拡張子抜きのファイル名を生成 "[A1セルの内容]_[シート名]_[タイムスタンプ]" // var baseName = "S" + String(i + 1) + "_" + name; var baseName = ssName; // PDFファイルを出力 createPDF(folderid, ssId, sheetId, baseName); } } }

試したこと

ノンプログラマがブログを見ながらコピペを重ねているだけで、プログラムを理解できていないので、できることがありません。
すみません。

補足情報(FW/ツールのバージョンなど)

シートを作った流れでPDFにまでする方法があれば教えてください。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

引用元の情報は書いてください。
https://teratail.com/questions/98948
https://www.virment.com/create-pdf-google-apps-script/

javascript

1 // シート分PDFに出力 2 for(var i = 2; i <= 9; i++) { 3 // シートIDを取得 4 var sheetId = sheet[i].getSheetId(); 5 // シート名を取得 6 var sheetName = sheet[i].getName(); 7 // 拡張子抜きのファイル名を生成 "[A1セルの内容]_[シート名]_[タイムスタンプ]" 8 // var baseName = "S" + String(i + 1) + "_" + name; 9 var baseName = ssName; 10 // PDFファイルを出力 11 createPDF(folderid, ssId, sheetId, baseName); 12 }

のところですが、

javascript

1 // このシートをPDFに出力 2 createPDF(folderid, '*************', sheet.getSheetId(), ssName); //'*************'のところは実際には入力してますと同じものを書きます

の一行で良いです。ループの関係で、teratailの参考元とは状況が違うので、二度目のループは不要。

ところで、createPDFのコードをもってこないと実行できませんよ?あとfolderidは適切に設定しないと動きませんよ?

投稿2018/06/18 13:24

編集2018/06/18 13:25
papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問