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

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

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

などがあります。

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

あわせて読みたい
グーグルフォームで自動返信メールを簡単に送る方法②[GAS編] 前回、アドオンでの自動返信についてご紹介しましたが 関連記事:グーグルフォームで自動返信メールを簡単に送る方法①[アドオン編] 定型文しか送れない送信元メールア...
目次

GASの処理手順

処理の手順としては

  1. 任意のスプレッドシートをExcelファイルに変換する
  2. 指定した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による業務の自動化〜

おすすめの本

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる