見出し画像

スプレッドシートを指定したフォルダに格納したい!!

どーも!Dec《デク》です!
なかなか更新ができず、パソコンを触る回数がすごく減ってしまったと最近感じています。
そしてFXの調子が悪いー。。。

というのは置いといて!
見積もりだったり、なんかのデータだったり、フォルダを振り分けておかないとドライブ内もぐちゃぐちゃになっちゃいますよね。
前回はこちらでPDFの作成までを記事にしました。
今回は、前回作成したGASを発展させまして、作成したPDFをドライブ内のフォルダに振り分けたいと思います!

今回はフォルダを振り分けるということで、振り分けるには、PDFを格納するフォルダがそもそもあるかないかなんてのも判断しなきゃいけないですよね、同じ名前のフォルダをいくつも作るわけにもいかないですし!(ドライブでは、同名フォルダ、同名ファイルが幾つでも作成可能なので気をつけてください!)

それでは、まずフォルダを探していきましょう!
※スプレッドシートA1セルに2022/4/1のような日付データが入っていると仮定して、フォルダは年フォルダ>各月のフォルダのようなフォルダ分けを例とします。付けたいファイル名はB1に入っているとしましょう。

function main(){
let folderid = "@@@";
let parent = DriveApp.getFolderById(folderid);
const year = ss.getRange("A1").getValue().getFullYear();//年のみ取り出し
const month = ss.getRange("A1").getValue().getMonth()+1;//月のみ取り出し
const filename = ss.getRange("B1").getValue();

const storefolder = searchFolder(parent,ss,year,month);
storefolder.createFile(createPDF(ss,filename));
}

function  searchFolder(parent,ss,year,month){
  const yfolder = parent.getFoldersByName(year + "年");
  if(yfolder.hasNext()){
    parent = yfolder.next();//親フォルダを年フォルダに遷移
  }else{//そもそも年ごとのフォルダが存在しない場合に、年フォルダを作成
    parent = parent.createFolder(year + "年");
  }
 
  //親フォルダを月フォルダに遷移
  //格納する病院フォルダの探索 
  const mfolder = parent.getFoldersByName(month + "月")
  if(mfolder.hasNext()){
    parent = mfolder.next();
  }else{
    parent = parent.createFolder(month + "月");
  }
  //探索or作成完了
  return parent;
}
function createPDF(ss,filename){}//前回PDF作成の記事参照

と、こんな感じで書いてみました!
多分他にも色々と簡単な方法があるんだと思いますが、マイドライブ⇨年フォルダ⇨月フォルダ⇨各ファイル格納という流れが個人的にはこのやり方が一番わかりやすいので、この方法を採用しました。

こちらに加えて、元のスプレッドシートも残しておきたいななんて思ったので、ファイルコピー用のGASも書いてみました。

function copyDatasht(ss,storefolder,filename){
  const templete = DriveApp.getFileById(ss.getId());
  const storefolderid = storefolder.getId();
  const copyFolder = DriveApp.getFolderById(storefolderid);
  templete.makeCopy(filename,copyFolder);

こちらを合わせれば、PDFをスプレッドシートの両方を保存しておくことができるので、後から修正したいなどがあるときに便利ですよね。
本当は、後から修正した時は、修正したことがわかるようにファイル名などを変更したものも実装したいのですが、探索回数が増えてしまうので、実装しませんでした。

PDFやスプレッドシートを各フォルダに保存する前に、一度同名となるfilenameのデータがないか探索するだけなんですけど。。。もしあればfilenameに1,2,3…なんて加えていけばいいかなーなんて思ってたりします。

ドライブ活用の参考になればいいなと思います!
それでは!!

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