GAS スプレッドシートをPDFに変換してGoogleDriveに保存する(シート単位)
この記事の説明
GASを使って、スプレッドシートをPDFに変換する処理を記述する際の手順です。
PDF化してDriveに保存する
スプレッドシートでファイルをエクスポートするには、下記のURLにアクセスすることで出来ます。
URLに、クエリストリングでパラメータを渡すことで、変換フォーマットや変換するシートを指定します。
変換には認証が必要です。
1. エクスポートURL
"https://docs.google.com/spreadsheets/d/[スプレッドシートID]/export"
-
クエリストリング
?exportFormat=pdf
-
シートを指定するには?
- クエリストリングgidにシートIDを渡します。
?gid=[シートID]
-
シートIDとは?
- スプレッドシートの各シートには固有のidが振られています。下図のようにURLから取得できます。
2. 認証
ファイルへのアクセス権を証明するために、ScriptApp.getOAuthToken();
でトークンを取得して、そのトークンを使って認証します。
今回はBearer認証を使います。
var url = "https://docs.google.com/spreadsheets/d/" + QuoteStId + "/export?exportFormat=pdf&gid=SID".replace("SID",stId);
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url,{
headers:{
"Authorization" : "Bearer "+ token
}
});
3. PDFをGoogleDriveに保存する。
urlfetchの戻り値の中のblobを使って、DriveAppのcreateFileメソッドを使ってドライブに保存します。
var filename = "ファイル名"
var blob = response.getBlob().setName(filename);
var folder = DriveApp.getFolderById("GoogleDriveに作成した保存フォルダのID");
var file = folder.createFile(blob);
4. GASコードまとめ
//PDF化
var url = "https://docs.google.com/spreadsheets/d/" + QuoteStId + "/export?exportFormat=pdf&gid=SID".replace("SID",stId);
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url,{
headers:{
"Authorization" : "Bearer "+ token
}
//PDFファイルをGoogleドライブに保存する処理
var filename = "ファイルネーム"
var blob = response.getBlob().setName(filename);
var folder = DriveApp.getFolderById("GoogleDriveに作成した保存フォルダのID");
var file = folder.createFile(blob);
参考
Bearer認証について
https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1
[Google Apps Script]認証が必要なウェブアプリケーションを外部から実行する
https://www.ka-net.org/blog/?p=12258
GASを使ってGoogle Drive内にあるファイルのダウンロードURLからコンテンツを取得したい
https://qiita.com/tanaike/items/9fd1294647e2181c7765
注意
- PDF化したときに空白ページが紛れてしまう
- スプレッドシートのPDF化は何故か未使用セルの部分までPDF化されてしまい、PDFの最終ページに空白ページが紛れてしまうことがある。この場合は元となるスプレッドシートの未使用領域のセルを削除しておくと良いです。
//PDF化
var url = "https://docs.google.com/spreadsheets/d/" + QuoteStId + "/export?exportFormat=pdf&gid=SID".replace("SID",stId);
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url,{
headers:{
"Authorization" : "Bearer "+ token
}
//PDFファイルをGoogleドライブに保存する処理
var filename = "ファイルネーム"
var blob = response.getBlob().setName(filename);
var folder = DriveApp.getFolderById("GoogleDriveに作成した保存フォルダのID");
var file = folder.createFile(blob);
Bearer認証について
https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1
[Google Apps Script]認証が必要なウェブアプリケーションを外部から実行する
https://www.ka-net.org/blog/?p=12258
GASを使ってGoogle Drive内にあるファイルのダウンロードURLからコンテンツを取得したい
https://qiita.com/tanaike/items/9fd1294647e2181c7765
- PDF化したときに空白ページが紛れてしまう
- スプレッドシートのPDF化は何故か未使用セルの部分までPDF化されてしまい、PDFの最終ページに空白ページが紛れてしまうことがある。この場合は元となるスプレッドシートの未使用領域のセルを削除しておくと良いです。
Author And Source
この問題について(GAS スプレッドシートをPDFに変換してGoogleDriveに保存する(シート単位)), 我々は、より多くの情報をここで見つけました https://qiita.com/jooji/items/24ac7fb30fbb4443b5a6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .