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

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回答

1439閲覧

【GAS】スプレッドシートで表示されてる全てのシートをPDF化し、Googleドライブに保存する方法が知りたいです。※開いてあるシートをドライブ保存まではできています。

退会済みユーザー

退会済みユーザー

総合スコア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 05:36

編集2021/02/12 07:04

Googleスプレッドシートでシート毎にPDFに書き出したいです。

現在、開いているページのPDFへの書き出しはできています。

現状のコードが下記のものになります。
コードはこちらを使用させていただいています。
コード使用先URL
よろしくお願いします。

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

エラーメッセージ

function myFunction(){

// PDFの保存先となるフォルダID 確認方法は後述
var folderid = "1ed4fej1JyhMTnn4CIYsTSXcdcoe9G_o1";

// マイドライブ直下に保存したい場合は以下
// var root= DriveApp.getRootFolder();
// var folderid = root.getId();

 ////////////////////////////////////////////
// 現在開いているスプレッドシートをPDF化したい場合//
////////////////////////////////////////////
// 現在開いているスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();

// 現在開いているスプレッドシートのIDを取得
var ssid = ss.getId();

// 現在開いているスプレッドシートのシートIDを取得
var sheetid = ss.getActiveSheet().getSheetId();
// getActiveSheetの後の()を忘れると、TypeError: オブジェクト function getActiveSheet() {/* */} で関数 getSheetId が見つかりません。

// ファイル名に使用する名前を取得
var customer_name = ss.getRange("A2").getValue();
// ここで例として使用しているスプレッドシートのC15に顧客の名前が入っているため、それをファイル名用に取得しているだけです。

// ファイル名に使用するタイムスタンプを取得
var timestamp = getTimestamp();

// PDF作成関数
createPDF( folderid, ssid, sheetid, customer_name + "_" + timestamp );

}

// PDF作成関数 引数は(folderid:保存先フォルダID, ssid:PDF化するスプレッドシートID, sheetid:PDF化するシートID, filename:PDFの名前)
function createPDF(folderid, ssid, sheetid, filename){

// PDFファイルの保存先となるフォルダをフォルダIDで指定
var folder = DriveApp.getFolderById(folderid);

// スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成
var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid);

// PDF作成のオプションを指定
var opts = {
exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx
size: "A4", // 用紙サイズの指定 legal / letter / A4
portrait: "false", // true → 縦向き、false → 横向き
fitw: "true", // 幅を用紙に合わせるか
sheetnames: "false", // シート名をPDF上部に表示するか
printtitle: "false", // スプレッドシート名をPDF上部に表示するか
pagenumbers: "false", // ページ番号の有無
gridlines: "false", // グリッドラインの表示有無
fzr: "false", // 固定行の表示有無
gid: sheetid // シートIDを指定 sheetidは引数で取得
};

var url_ext = [];

// 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納
for( optName in opts ){
url_ext.push( optName + "=" + opts[optName] );
}

// url_extの各要素を「&」で繋げる
var options = url_ext.join("&");

// optionsは以下のように作成しても同じです。
// var ptions = 'exportFormat=pdf&format=pdf'
// + '&size=A4'
// + '&portrait=true'
// + '&sheetnames=false&printtitle=false'
// + '&pagenumbers=false&gridlines=false'
// + '&fzr=false'
// + '&gid=' + sheetid;

// API使用のためのOAuth認証
var token = ScriptApp.getOAuthToken();

// PDF作成 var response = UrlFetchApp.fetch(url + options, { headers: { 'Authorization': 'Bearer ' + token } }); // var blob = response.getBlob().setName(filename + '.pdf');

//}

// PDFを指定したフォルダに保存
folder.createFile(blob);

}

// タイムスタンプを返す関数
function getTimestamp () {
var now = new Date();
var year = now.getYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var hour = now.getHours();
var min = now.getMinutes();
// var sec = now.getSeconds();

return year + "_" + month + "_" + day + "_" + hour + min;

}

// スプレッドシートのメニューからPDF作成用の関数を実行出来るように、「スクリプト」というメニューを追加。
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [
{
name : "Create PDF",
functionName : "myFunction"
}
];
sheet.addMenu("スクリプト", entries);
};

ソースコード

試したこと

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

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

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

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

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

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

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

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

Daregada

2021/02/12 06:04

「現状のコードが下記のものになります。」って、これは「virtualiment」というサイトの「Google Apps Script で指定したシートをPDF化するスクリプト」(https://www.virment.com/create-pdf-google-apps-script/)のコードそのままなのでは?
退会済みユーザー

退会済みユーザー

2021/02/12 06:48

コメントありがとうございます! GASで作成するシートが100個あり、指定コードではなく全てのスプレッドシート(100個)をまとめて別々のPDFにできるのかなと思いまして、質問させていただきました????
Daregada

2021/02/12 06:53

あなたがどうしたいかではなくて、「他人のコードをまるごとそのまま載せているのかどうか」について答えてもらえませんか?
退会済みユーザー

退会済みユーザー

2021/02/12 07:04

すみません。自分のミスで人様のコードをURLなしにそのまま載せてしまっていました。今文章を修正させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問