GASを使って簡単!ファイルダウンロードとアップロードの方法

GASを使ってファイルのダウンロードとアップロードってどうやるんだろう。社内で効率的にファイルを共有したいんだけど…
猫男
猫男
catman
catman
任せてくれ。catmanと一緒にやってみよう。

GASでファイルをダウンロードする方法

まずは、GAS(Google Apps Script)でGoogleドライブからファイルをダウンロードする方法を見ていこう。

 

さて結論から。

Google Apps Script単体では直接ユーザーにファイルを「自動でダウンロードさせる」ことはできない!

これはしょうがない。

 

でもWebアプリとして公開すれば、ダウンロードリンクとして提供できるんだ。


function doGet(e) {
  const fileId = e.parameter.id;
  const file = DriveApp.getFileById(fileId);
  const blob = file.getBlob();
  
  // Base64に変換
  const base64 = Utilities.base64Encode(blob.getBytes());
  const mimeType = blob.getContentType();
  const fileName = file.getName();

  // ダウンロード用のHTMLを生成
  const html = `
    <a id="dl" download="${fileName}"></a>Download
    <script>document.getElementById("dl").click();</script>
  `;
  
  return HtmlService.createHtmlOutput(html);
}
  • e.parameter.id … URLパラメータから取得したファイルIDを受け取る。
  • DriveApp.getFileById(fileId) … 指定したIDのDriveファイルを取得。
  • getBlob() … ファイルをバイナリデータ(Blob)として読み込む。
  • Utilities.base64Encode() … BlobをBase64に変換。
  • HtmlService.createHtmlOutput(html) … ダウンロード用のHTMLをレスポンスとして返す。

 

使い方は簡単。

GASのメニューで「デプロイ」→「新しいデプロイ」。

gas ダウンロード アップロード

種類は「ウェブアプリ」、アクセスできるユーザーを「全員(匿名含む)」にしてデプロイ。

発行されたURLの末尾に ?id=ファイルID をつける!

https://script.google.com/macros/s/AKf.../exec?id=◯◯◯◯

そして、このURLをブラウザで開けばいいんだ。

すると、こんな感じのボタンが出てきて、押すとファイルがダウンロードされる。

え、GASってファイル配布ページみたいなこともできるんだ!
猫男
猫男
catman
catman
このURLを共有すれば、相手はそのままファイルをダウンロードできるってわけさ!

 

GASでファイルをアップロードする方法

次に、GASでGoogleドライブにファイルをアップロードする方法を紹介する。

ファイルアップロードは驚くほど簡単だ。

 function uploadFile() {
  const folder = DriveApp.getRootFolder();
  const fileName = '新しいファイル.txt';
  const content = 'このテキストをファイルに書き込みます。';
  folder.createFile(fileName, content);
} 
  • DriveApp.getRootFolder() … Google Driveの「マイドライブ(ルートフォルダ)」を取得。
  • fileName … 作成するファイル名(ここでは「新しいファイル.txt」)。
  • content … ファイルに書き込む文字列。
  • folder.createFile(fileName, content) … 指定した名前と内容でテキストファイルを作成。

 

なるほど!ルートフォルダにファイルを作るんだね。
猫男
猫男

 

練習問題

特定のフォルダに、新しいファイル「helloWorld.txt」を作成し、その内容として「Hello World」と記述してみよう。

 

 

解答・解説

以下にコード例とその解説を示すぞ。

 function uploadHelloWorld() {
  const folderId = '特定のフォルダIDをここに';
  const folder = DriveApp.getFolderById(folderId);
  const fileName = 'helloWorld.txt';
  const content = 'Hello World';
  folder.createFile(fileName, content);
} 

このスクリプトは、getFolderByIdメソッドを使って、特定のフォルダを取得し、指定した内容を持つファイルをそこに作成する。

わぁ!これで特定のフォルダにファイルを作れるんだ。やってみるよ!
猫男
猫男
catman
catman
どんどん試してみよう。実践を繰り返すうちに、きっとGASの達人になれるさ。