サイトアイコン Googleスプレッドシート 完全攻略

【GAS】スプレッドシートの特定の範囲をPDF出力する方法(コピペでできる)

GAS基礎講座一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【GAS基礎講座13】配列操作時にfor文よりも使えるforEach
4回に渡って、Googleドキュメントの中身を スプレッドシートのデータに差し替えて 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を現在のシートの内容で更新する方法
  • GASで既存のPDFを更新することができます。
  • ファイルIDの取得方法や設定方法がわかります。
  •  

     

     

    次回は、出来上がったPDFをメールに添付しましょう。

    【GAS】現在のシートをPDFにしてメールに添付する方法(コピペでできる)
  • スプレッドシートをPDFで出力することができます。
  • さらに特定の範囲や用紙の指定もできます。
  • さららにさらにPDF出力時の細かい設定もできます。
  •  

    GAS基礎講座一覧

    モバイルバージョンを終了