ローカルのファイルをGoogle Driveの指定フォルダにアップロードする
このようなフォームを作ってみる
フォームの例(画像)
アップロードする手順
- 「ファイルを選択」をクリックする
- ローカルファイルの選択画面が開く
- 任意のファイルを選択して「開く」をクリックする
- 「選択されていません」に選択したファイル名が表示される
- 「Submit」をクリックする
- 指定したフォルダにファイルがアップロードされる
- アップロードしたファイルのURLがアラートに出る
コード.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
function processForm(formObject) {
var folder_id = "FOLDER_ID";
var folder = DriveApp.getFolderById(folder_id);
var file = formObject.myFile;
var drive_file = folder.createFile(file);
var file_url = drive_file.getUrl();
return file_url;
}
|
意訳この機能がやること 指定したHTMLファイルを表示する この機能がやること アップロード先のフォルダIDを指定して フォルダを指定して formObjectの中のnameがmyFileの要素を取得して そのファイルをアップロードして そのURLを取得して 返す |
index.html
<!DOCTYPE html>
<html>
<body>
<form id="myForm" onsubmit="handleFormSubmit(this)">
<input name="myFile" type="file" />
<input type="submit" value="Submit" />
</form>
<script>
window.addEventListener('load', preventFormSubmit);
function preventFormSubmit() {
var form = document.getElementById("myForm");
form.addEventListener('submit', function(event) {
event.preventDefault();
});
}
function handleFormSubmit(formObject) {
google.script.run
.withSuccessHandler(updateUrl)
.processForm(formObject);
}
function updateUrl(url) {
alert(url);
}
</script>
</body>
</html>
|
意訳これはHTML5文書です フォームを置く ファイルをアップロードするためのボタンを置く サブミットボタンを置く ページが読み込まれたらpreventFormSubmitを実行する この機能がやること idがmyFormの要素を取得して submit が押されたときに実行するデフォルトのイベントを 無効化する この機能がやること .gsファイルを実行する 成功したらupdateUrlを実行する 実行する.gsファイルはprocessFormでformObjectを渡す この機能がやること 返ってきたurlをアラートに出す |
参考
HTML Service: Communicate with Server Functions / Forms
https://developers.google.com/apps-script/guides/html/communication#forms
HTML Service: Communicate with Server Functions / Forms
https://developers.google.com/apps-script/guides/html/communication#forms
