GASを使って簡単!ファイルダウンロードとアップロードの実践ガイド
GASを使ってファイルのダウンロードとアップロードってどうやるんだろう。社内で効率的にファイルを共有したいんだけど…

猫男

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
このURLを共有すれば、相手はそのままファイルをダウンロードできるってわけさ!
まとめ
- DriveAppではファイルの読み取りはできても「直接ダウンロード」は不可
- Webアプリ化すれば、ユーザーがダウンロードできるようになる
- URLパラメータを使えば任意のファイルIDをダウンロード可能にできる
GASでここまでできるの、正直感動した…!

猫男

catman
そのうちcatmanの配布所もこの仕組みで作ってやろうかね…。
GASでファイルをアップロードする方法
次に、GASを使ってGoogleドライブにファイルをアップロードする方法を紹介する。
ファイルをアップロードするスクリプト
ファイルアップロードも驚くほど簡単だ。
function uploadFile() {
const folder = DriveApp.getRootFolder();
const fileName = '新しいファイル.txt';
const content = 'このテキストをファイルに書き込みます。';
folder.createFile(fileName, content);
}
このコードは、DriveAppのgetRootFolderを使ってドライブのルートフォルダを取得して、その中に新しいファイルを作成する仕組みだ。
なるほど!ルートフォルダにファイルを作るんだね。

猫男
練習問題
ここで、GASでのファイルダウンロードとアップロードに関連した練習問題をひとつ出そう。
- 次のシナリオで考えてみよう:特定のフォルダに、新しいファイル「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
どんどん試してみよう。実践を繰り返すうちに、きっとGASの達人になれるさ。