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

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

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

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

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

931閲覧

スプレッドシートの資料に指定ワードを入れ込み、複数あるシートをGoogleドライブにPDFで保存

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

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

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google Apps Script

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

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/02/12 04:15

スプレッドシートの資料に指定ワードを入れ込み、複数あるシートをGoogleドライブにPDFで保存

フォーマットに複数ある指定ワードを別々で入れ込みシート化まで行くのですが、PDF化し、Googleドライブに保存までがうまくいきません。。

下記のコードがうまくいかずエラーになってしまいます。。
どうか、お力をお貸しいただくことはできますでしょうか?

【PDFexport(ssId, sheetId,tennmei[i],row, folder);//プログラムBを実行(5つの引数を渡す)】

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

ReferenceError: row is not defined(行 42、ファイル「コード」)

//プログラムA-0|プログラム名

function Seikyusho() {

//プログラムA-1|スプレッドシートを設定
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();//変数spreadsheetに「アクティブなスプレッドシート」を設定
var sheet = spreadsheet.getSheetByName('シート1');//変数sheetに「シート1」シートを設定
var myRange = sheet.getDataRange().getValues();//スプレッドシートのデータを二次元配列として取得

//プログラムA-2|変数templateに「フォーマット」シートを設定
var template = spreadsheet.getSheetByName('フォーマット');//変数sheetに「フォーマット」シートを設定

//プログラムA-3|空の配列を設定
var tennmei = [];

//プログラムA-4|プログラム2の取引先(E列)をプログラム3の空配列に取得
for (var i=1; i<myRange.length; i++){
tennmei.push(myRange[i][4]);//配列torihikiにmyRange[i][4]を追加
}

//プログラムA-6|商品名ごとに繰り返す
for (var i=0; i<tennmei.length; i++){

//プログラムA-6-3|シートを追加して、シート名を各取引先に変更 var newsheet = template.copyTo(spreadsheet);//「請求書フォーマット」のシートをコピーする

newsheet.setName(tennmei[i]);//コピーしたシートの名前を「torihiki_list[i]」にする

newsheet.getRange('A2').setValue(tennmei[i]);//請求書のセルB4に取引先を入力 Utilities.sleep(1000); //1秒待機(待機中に情報を更新) SpreadsheetApp.flush(); //挿入したシートの情報更新

}
//プログラムA-6-8|PDF化
var ssId = spreadsheet.getId();//スプレッドシートIDを取得
var sheetId = newsheet.getSheetId();//取引先のシートIDを取得
var folderurl = newsheet.getRange('I1').getValue();//newsheetのセルJ2の値(PDF保管先のフォルダURL)
var myArray= folderurl.split('/'); //folderurlを「/」で区切る
var folderid = myArray[myArray.length-1];//変数folderidにフォルダIDを取得
var folder = DriveApp.getFolderById(folderid);//PDF保管先のfolderを設定
PDFexport(ssId, sheetId,tennmei[i],row, folder);//プログラムBを実行(5つの引数を渡す)
}

//プログラムB-0|PDF化
function PDFexport(ssId, sheetId, tennmei, row, folder) {

//プログラムB-1|PDF化の条件設定
var url = 'https://docs.google.com/spreadsheets/d/'+ ssId +'/export?';
var opts = {
exportFormat: 'pdf', // ファイル形式の指定
format: 'pdf', // ファイル形式の指定
size: 'A4', // 用紙サイズの指定
portrait: 'false', // true縦向き、false 横向き
fitw: 'true', // 幅を用紙に合わせるか?
sheetnames: 'false', // シート名を PDF 上部に表示するか?
printtitle: 'false', // スプレッドシート名をPDF上部に表示するか?
pagenumbers: 'false', // ページ番号の有無
gridlines: 'false', // グリッドラインの表示有無
fzr: 'false', // 固定行の表示有無
range : 'A1%3AG' + row, // 対象範囲「%3A」 = : (コロン)
gid: sheetId // シート ID を指定 (省略する場合、すべてのシートをダウンロード)
};

//プログラムB-2|PDF化のurl作成
var PDFurl = [];//urlという空配列を設定
for(optName in opts){
PDFurl.push(optName + '=' + opts[optName]);//opts配列の各要素を=でつないだものをurl配列に格納
}
var options = PDFurl.join('&');//urlの配列の各要素を&でつなぐ

//プログラムB-3|PDF化の条件設定
var token = ScriptApp.getOAuthToken();//アクセストークンを取得
var response = UrlFetchApp.fetch(url + options, {headers: {'Authorization': 'Bearer ' + token}}); //PDFのURLからアクセスする
var blob = response.getBlob().setName(tennmei + '.pdf');//PDFの名前を「取引先+.pdf」とする
var newFile = folder.createFile(blob);//PDFを所定のフォルダに保管する
newFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);//共有設定をする:「リンクを知っている人」が「閲覧可能」
}

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問