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

猫男

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のメニューで「デプロイ」→「新しいデプロイ」。
種類は「ウェブアプリ」、アクセスできるユーザーを「全員(匿名含む)」にしてデプロイ。
発行されたURLの末尾に ?id=ファイルID
をつける!
https://script.google.com/macros/s/AKf.../exec?id=◯◯◯◯
そして、このURLをブラウザで開けばいいんだ。
すると、こんな感じのボタンが出てきて、押すとファイルがダウンロードされる。
え、GASってファイル配布ページみたいなこともできるんだ!

猫男

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
どんどん試してみよう。実践を繰り返すうちに、きっとGASの達人になれるさ。