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

GASを使ってファイルのダウンロードとアップロードってどうやるんだろう。社内で効率的にファイルを共有したいんだけど…
猫男
猫男
catman
catman
任せてくれ。catmanが「GASでのファイルダウンロードとアップロード」について、ビシッと教えてやる。

GASでファイルをダウンロードする基本

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

ファイルIDを取得しよう

ファイルダウンロードの第一歩は、Googleドライブ上のファイルIDを取得することから始まる。

 const fileId = 'ここにファイルIDを入力'; 

ファイルIDはドライブ内のファイルURLから取得できるよ。URLの中の …/d/◯◯◯/ の部分がIDなんだ。

なるほど、URLからファイルIDを取り出すんだね。
猫男
猫男

ファイルをダウンロードするWebアプリを作成しよう

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

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

 function doGet(e) {
    const fileId = e.parameter.id;
    const file = DriveApp.getFileById(fileId);
    const blob = file.getBlob();
    return ContentService .createBinaryOutput(blob) .setMimeType(blob.getContentType()) .downloadAsFile(file.getName());
 } 

📌 ポイント解説

  • e.parameter.id でURLパラメータからファイルIDを取得
  • getFileById() でファイル取得
  • getBlob() で中身をバイナリ化
  • downloadAsFile() でダウンロード可能なレスポンスに変換!
え、GASってファイル配布ページみたいなこともできるんだ!
猫男
猫男

Webアプリとして公開する手順

  • GASのメニューで「デプロイ」→「新しいデプロイ」
  • 種類は「ウェブアプリ」
  • 実行する関数を「doGet」に指定
  • アクセスできるユーザーを「全員(匿名含む)」にしてデプロイ
  • 発行されたURLの末尾に ?id=ファイルID を付ける!
https://script.google.com/macros/s/AKf.../exec?id=◯◯◯◯

catman
catman
このURLを共有すれば、相手はそのままファイルをダウンロードできるってわけさ!

まとめ

  • DriveAppではファイルの読み取りはできても「直接ダウンロード」は不可
  • Webアプリ化すれば、ユーザーがダウンロードできるようになる
  • URLパラメータを使えば任意のファイルIDをダウンロード可能にできる
GASでここまでできるの、正直感動した…!
猫男
猫男
catman
catman
そのうちcatmanの配布所もこの仕組みで作ってやろうかね…。

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

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

ファイルをアップロードするスクリプト

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

 function uploadFile() {
  const folder = DriveApp.getRootFolder();
  const fileName = '新しいファイル.txt';
  const content = 'このテキストをファイルに書き込みます。';
  folder.createFile(fileName, content);
} 

このコードは、DriveAppのgetRootFolderを使ってドライブのルートフォルダを取得して、その中に新しいファイルを作成する仕組みだ。

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

練習問題

ここで、GASでのファイルダウンロードとアップロードに関連した練習問題をひとつ出そう。

  1. 次のシナリオで考えてみよう:特定のフォルダに、新しいファイル「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の達人になれるさ。