【GAS】スプレッドシートを自動でGoogleドライブにアップロード

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

複数人でスプレッドシートを共有している場合、ファイルを定期的に処理したい場合があります。例えば

  • 毎月・毎週決まった時間にデータをバックアップファイルとして保管したい
  • メンバーにメールなどで送信したい

などがあります。

今回はスプレッドシートをExcelファイルに変換して、Googleドライブの任意のフォルダに自動的に保管する方法をご紹介します。

目次

GASの処理手順

処理の手順としては

STEP
任意のスプレッドシートをExcelファイルに変換する
STEP
指定したGoogleドライブのフォルダにアップロードする

2つのステップで行います。

任意のスプレッドシートをExcelファイルに変換する

//スプレッドシートをexcelに変換して返す
function excelExport(sheetID, fileName){
  // --> エクセルファイル
  // sheetID:スプレッドシートのID
  // xlsxName:保存したいファイル名 
  let today = Utilities.formatDate(new Date(),"JST","yyyyMMdd");//今日の日付を取得yyyy-MM-dd方式
  let xlsxName = `${today}_${fileName}.xlsx`;
  let options = {
    method: 'get',
    headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
    muteHttpExceptions: true
  };
  //スプレッドシートの内容をエクセル変換
  let fetchUrl = `https://docs.google.com/feeds/download/spreadsheets/Exportkey=${sheetID}&exportFormat=xlsx`;
  let xlsxFile = UrlFetchApp.fetch(fetchUrl,options).getBlob().setName(xlsxName);
  return xlsxFile
}

引数に、スプレッドシートのIDと任意のファイル名をとります。
順番に解説していきます。

スプレッドシートのID

スプレッドシートを開いたURLに記載されています。

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxx/edit#gid=0

xxxxxxxの文字列部分がIDとなります。

指定したGoogleドライブのフォルダにアップロード

// Googleドライブにアップロードする
function gdriveUpload(folderID, uploadFile){
  let folder = DriveApp.getFolderById(folderID);
  let drive_file = folder.createFile(uploadFile);
  return drive_file;
}

引数にアップロードするフォルダのIDと、アップロードしたいファイルを指定します。

予めGoogleドライブにフォルダを作成しておき、フォルダのIDを取得しておきます。

フォルダのID

フォルダのIDはスプレッドシートのID取得方法と同様に

https://drive.google.com/drive/folders/xxxxxxxxxxxxxxxxx

xxxxの部分がIDとなっており、フォルダを開いた時のURLから取得できます。

二つの処理を統合

全体のサンプルコードです。任意のGoogleAppsScriptの画面にコピペしてください。

function myFunction() {
  
  const sheetID = "xxxxxxxxxxxxxxxxxxxxxxxxx";
  const folderID = "xxxxxxxxxxxxxxxxxxxxx";
  const xlsxName = "任意の名前";

  // スプレッドシートをExcel形式で取得
  const xlsxFile = excelExport(sheetID, xlsxName);
  
  // ↓アップロード先にアップロード
  gdriveUpload(folderID, xlsxFile);

}

//スプレッドシートをexcelに変換して返す
function excelExport(sheetID, fileName){
  // --> エクセルファイル
  // sheetID:スプレッドシートのID
  // xlsxName:保存したいファイル名 
  let today = Utilities.formatDate(new Date(),"JST","yyyyMMdd");//今日の日付を取得yyyy-MM-dd方式
  let xlsxName = `${today}_${fileName}.xlsx`;
  let options = {
    method: 'get',
    headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
    muteHttpExceptions: true
  };
  //スプレッドシートの内容をエクセル変換
  let fetchUrl = `https://docs.google.com/feeds/download/spreadsheets/Export?key=${sheetID}&exportFormat=xlsx`;
  let xlsxFile = UrlFetchApp.fetch(fetchUrl,options).getBlob().setName(xlsxName);
  return xlsxFile
}

// Googleドライブにアップロードする
function gdriveUpload(folderID, uploadFile){
  let folder = DriveApp.getFolderById(folderID);
  let drive_file = folder.createFile(uploadFile);
  return drive_file;
}

最初にある「sheetID」と「folderID」は先ほど取得したIDを入力してください。

また、「xlsxName」に任意のファイル名を入力します。
ファイル名は「今日の日付+任意のファイル名.xlsx」形式にしてあります。

保存が完了したら、実行してみましょう!

無事出来ていたら、任意のフォルダにデータが保存されているはずです。

リクエストを送る処理については下記関連記事をご参照ください。

トリガーの設定

定期実行させるため、トリガーを設定します。

赤枠部分にて、任意の時間で実行させます。

お疲れ様でした。これで完了です!

まとめ

  • スプレッドシートのダウンロード
  • 指定したフォルダにアップロード

の方法をご紹介しました!

このやり方を覚えておけば、前後に他の細かい処理を加えることも出来て汎用的なので是非使ってみてください!

おすすめのUdemy学習動画

ビジネスパーソンに贈る業務効率化大全 〜Google Apps Scriptによる業務の自動化〜

おすすめ学習書籍

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次