見出し画像

スプレッドシートをPDFでドライブに保存!

どーも!Dec《デク》です!
徐々に桜が咲いてきてるところもあるみたいで、天気が良い日が続いて欲しいですね!花粉だけが気になりますが、今年は例年よりもなぜか辛くないので、嬉しいです笑

円安の進行については嬉しくないところもあったり、なかったり。。。

さて、それでは、昨日基本の「き」として書きましたが、本題に入っていきたいと思います!

PDFを作成していく部分の全体像です!function main()には、今後ファイル整理用に変数など追加しますが、とりあえず、必要な部分のみ抜き出しました!

function main() {
  const folderid = "@@@";//@@@に保存先となるドライブのフォルダIDを指定
  let folder = DriveApp.getFolderById(folderid);
  const ss = SpreadsheetApp.getActiveSpreadsheet();//現在のスプシを取得
  const filename = ss.getRange("@").getValue();//@にPDFのファイル名となるセルを指定
  folder.createFile(createPDF(ss,filename));
}

function createPDF(ss,filename){
  const ssid = ss.getId();
  const sheetid = ss.getSheetId();
  const url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid);
  // スプレッドシートをPDFにエクスポート用URLにオプションを指定付加してPDFを作成

  // PDF作成のオプションを指定
  const opts = {
    exportFormat: "pdf",    // ファイル形式の指定 pdf / csv / xls / xlsx
    format:       "pdf",    // ファイル形式の指定 pdf / csv / xls / xlsx
    size:         "A4",     // 用紙サイズの指定 legal / letter / A4
    portrait:     "true",   // true → 縦向き、false → 横向き
    fitw:         "true",   // 幅を用紙に合わせるか
    scale:        "4",      //1= 標準100%, 2= 幅に合わせる, 3= 高さに合わせる,  4= ページに合わせる
    sheetnames:   "false",  // シート名をPDF上部に表示するか
    printtitle:   "false",  // スプレッドシート名をPDF上部に表示するか
    pagenumbers:  "false",  // ページ番号の有無
    gridlines:    "false",  // グリッドラインの表示有無
    fzr:          "false",  // 固定行の表示有無
    gid:           sheetid     // シートIDを指定 sheetidは引数で取得
  };
  
  const url_ext = [];
  
  // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納
  for( optName in opts ){
    url_ext.push( optName + "=" + opts[optName] );
  }

  // url_extの各要素を「&」で繋げる
  const options = url_ext.join("&");
  
  // API使用のためのOAuth認証
  const token = ScriptApp.getOAuthToken();

  // PDF作成
  try{
    var response = UrlFetchApp.fetch(url + options, {headers: {'Authorization': 'Bearer ' +  token}});
  }catch(e){
    Logger(e);
  }
  
  //blobにフェッチしたPDFをfileNameの名前で格納(createFile(bolb)で使用)
  const blob = response.getBlob().setName(filename + '.pdf');
  return blob;
}

以上です!

このコードの@部分を任意の値に変更してもらうだけで、スプシがPDFとしてドライブに保存できます!

ただ、このままでは、あるフォルダにどんどんPDFとして保存してくれるのは良いのですが、ファイルの整理ができないですよねー。
これでは使い勝手が悪い!
例えば、見積もりであれば顧客ごとや作成日ごとにフォルダを分けたいんですよねってことで、そこについてもこちらに加えていきたいと思います!

今日はここまでです!それでは!

この記事が気に入ったらサポートをしてみませんか?