ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS基礎講座13】配列操作時にfor文よりも使えるforEach
4回に渡って、Googleドキュメントの中身を
スプレッドシートのデータに差し替えて
PDFファイルを作成します。
の最終回です。
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- スプレッドシートをPDFで出力することができます。
- さらに特定の範囲や用紙の指定もできます。
- さららにさらにPDF出力時の細かい設定もできます。
なので、サクッとマスターして
と答えてあげてください。
Excelの場合はこちら↓
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
スクリプト
/**
* スプレッドシートの特定の範囲をPDFに出力する
*/
function SheetToPDF() {
//-------------------------設定------------------------
const FOLDER_ID = 'シートID'
// PDF出力するシートを指定
const SH_NAME = 'シート名'
// 出力する範囲
const RANGE_F = 'A1' //開始位置
const RANGE_T = 'Z100' //終了位置
// サイズ
const SIZE = 'A3'
// 縦横
const TATE = 'true' //横の場合は 'false'
//-------------------------設定------------------------
const shname = SH_NAME + ".pdf"
const ss = SpreadsheetApp.getActiveSpreadsheet()
const ssId = ss.getId()
const sheetId = ss.getSheetByName(SH_NAME).getSheetId()
// スプレッドシートをPDF出力するためのURL
const url = 'https://docs.google.com/spreadsheets/d/' + ssId + '/export?'
// PDF出力のオプションを設定
const options = 'exportFormat=pdf&format=pdf'
+ '&gid=' + sheetId //PDFにするシートの「シートID」
+ '&portrait=' + TATE //true(縦) or false(横)
+ '&size=' + SIZE //印刷サイズ
+ '&gridlines=false' //グリッドラインの表示有無
+ '&range=' + RANGE_F + '%3A' + RANGE_T //セル範囲を指定 %3A はコロン(:)を表す
+ '&top_margin=0.50' //上の余白
+ '&right_margin=0.50' //右の余白
+ '&bottom_margin=0.50' //下の余白
+ '&left_margin=0.50' //左の余白
+ '&sheetnames=false' //シート名の表示有無
+ '&printtitle=false' //スプレッドシート名の表示有無
+ '&pagenum=UNDEFINED' //ページ番号をどこに入れるか
+ '&scale=4' //1= 標準100%, 2= 幅に合わせる, 3= 高さに合わせる, 4= ページに合わせる
+ '&horizontal_alignment=CENTER'//水平方向の位置
+ '&vertical_alignment=CENTER'//垂直方向の位置
+ '&gridlines=false' //グリッドラインの表示有無
+ '&fzr=false' //固定行の表示有無
+ '&fzc=false' //固定列の表示有無
console.log(options)
const requestUrl = url + options
//API使用のためのOAuth認証
const token = ScriptApp.getOAuthToken()
const params = {
'headers': { 'Authorization': 'Bearer ' + token },
'muteHttpExceptions': true
}
const response = UrlFetchApp.fetch(requestUrl, params)
//Blobオブジェクトを作成
const pdfblob = response.getBlob()
pdfblob.setName(shname) //PDFファイル名を設定
// 指定のフォルダにPDFファイルを作成
const folder = DriveApp.getFolderById(FOLDER_ID)
folder.createFile(pdfblob)
}
ポイント
あなたの環境に合わせて設定してください
//-------------------------設定------------------------
const FOLDER_ID = '出力するフォルダID'
// PDF出力するシートを指定
const SH_NAME = 'sheet1'
// 出力する範囲
const RANGE_F = 'A1' //開始位置
const RANGE_T = 'Z100' //終了位置
// サイズ
const SIZE = 'A3'
// 縦横
const TATE = 'true' //横の場合は 'false'
//-------------------------設定------------------------
フォルダID
範囲を設定しない場合は、
+ '&range=' + RANGE_F + '%3A' + RANGE_T //セル範囲を指定 %3A はコロン(:)を表す
をコメントアウトしてください。
//+ '&range=' + RANGE_F + '%3A' + RANGE_T //セル範囲を指定 %3A はコロン(:)を表す
シートと同一フォルダに出力
//このスプレッドシートと同じフォルダにPDFファイルを作成
const parentFolders = DriveApp.getFileById(ss.getId()).getParents()
const folderId = parentFolders.next().getId()
const folder = DriveApp.getFolderById(folderId)
詳細は動画をご覧ください
最後までご覧いただきありがとうございます。
出来上がったPDFを更新する方法はこちら↓
【GAS】既存のPDFを現在のシートの内容で更新する方法
次回は、出来上がったPDFをメールに添付しましょう。
【GAS】現在のシートをPDFにしてメールに添付する方法(コピペでできる)
コメント