【GAS】現在のシートをPDFにしてメールに添付する方法(コピペでできる)

コピペでできるGAS

GAS基礎講座一覧

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

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

前回

【GAS】スプレッドシートの特定の範囲をPDF出力する方法(コピペでできる)
  • スプレッドシートをPDFで出力することができます。
  • さらに特定の範囲や用紙の指定もできます。
  • さららにさらにPDF出力時の細かい設定もできます。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    • 現在のスプレッドシートをPDFで出力しメールに添付することができます。
    • さらに特定の範囲や用紙の指定といったPDF出力時の細かい設定もできます。

    なので、サクッとマスターして

    と答えてあげてください。

    動画はこちら

    【GAS】コピペでできる GoogleスプレッドシートをPDFにしてメールに添付し送信する

    シートはこちら

    *クリックすることでシートが開きます。

    スクリプト

    現在のシートをメールに添付し送信する

    /**
     * 現在のシートをメールに添付し送信する
     */
    function SendMailattachPDF() {
    
    
      const ss = SpreadsheetApp.getActiveSpreadsheet()
      const ssId = ss.getId()
      const sh = ss.getActiveSheet()
      const shname = sh.getSheetName() + ".pdf"  //シート名の取得
      const sheetId = sh.getSheetId()
    
    
      //---------------------------設定---------------------------
      const TO = "送信先のメールアドレス"
      const SUBJECT = `【${shname}】をお送りします。`   //メールのタイトル
      const BODY = `メールの本文 例 \n ${shname}をお送りします。 `
      //---------------------------設定---------------------------
    
    
    
      // スプレッドシートをPDF出力するためのURL
      const url = 'https://docs.google.com/spreadsheets/d/' + ssId + '/export?'
    
    
      // PDF出力のオプションを設定
      const options = 'exportFormat=pdf&format=pdf'
        + '&gid=' + sheetId       //PDFにするシートの「シートID」
    
    
      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ファイル名を設定
    
    
      GmailApp.sendEmail(
        TO,
        SUBJECT,
        BODY,
        { attachments: pdfblob })
    }

     

    ポイント

    メール送信

    前回のスクリプトの最後の部分がファイル出力なので
    この部分を

    // 指定のフォルダにPDFファイルを作成
      const folder = DriveApp.getFolderById(FOLDER_ID)
    
      folder.createFile(pdfblob)
    

    sendEmail() に変更することでメール送信できます。

      GmailApp.sendEmail(.....pdfblob )

     

    PDF出力時の詳細設定

    PDF出力時の設定を変更する場合は、以下を追加します。

    
      //-------------------------設定------------------------
        // 出力する範囲
      const RANGE_F = 'A1'     //開始位置
      const RANGE_T = 'Z100'   //終了位置
      // サイズ
      const SIZE = 'A3'
      // 縦横
      const TATE = 'true'   //横の場合は 'false'
      //-------------------------設定------------------------
    
    
      
      // 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'            //固定列の表示有無
    
    
    
    
      

     

    詳細は動画をご覧ください

     

     

    ccを複数指定する場合はこちら

     

    ボタンを付加する方法

     

     

    最後までご覧いただきありがとうございます。

    つぎはこちら

    【GAS】既存のPDFを現在のシートの内容で更新する方法
  • GASで既存のPDFを更新することができます。
  • ファイルIDの取得方法や設定方法がわかります。
  •  

    GAS基礎講座一覧

    コメント

    タイトルとURLをコピーしました