ローカルのファイルをGoogle Driveの指定フォルダにアップロードする方法その2です
今回はform内のsubmitボタンではなく
formの外にあるボタンでアップロードしてみます
form内のsubmitボタンで実現する方法は こちら に書きました
アップロードする手順
- 「ファイルを選択」をクリックする
- ローカルファイルの選択画面が開く
- 任意のファイルを選択して「開く」をクリックする
- 「選択されていません」に選択したファイル名が表示される
- 「ボタン」をクリックする
- 指定したフォルダにファイルがアップロードされる
- アップロードしたファイルのURLがアラートに出る
コード.gsfunction 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"> <input name="myFile" type="file" /> </form> <button id="bt">ボタン</button> <script> var this_form = document.getElementById("myForm"); document.getElementById("bt").addEventListener('click', function() { handleFormSubmit(this_form) }); function handleFormSubmit(formObject) { google.script.run .withSuccessHandler(updateUrl) .processForm(formObject); } function updateUrl(url) { alert(url); } </script> </body> </html> | 意訳これはHTML5文書です フォームを置く ファイルをアップロードするためのボタンを置く ボタンを置く idがmyFormの要素を取得して idがbtの要素がクリックされた時にhandleFormSubmitに渡して実行する この機能がやること .gsファイルを実行する 成功したらupdateUrlを実行する 実行する.gsファイルはprocessFormでformObjectを渡す この機能がやること 返ってきたurlをアラートに出す |
関連記事
Googleドライブの指定したフォルダにファイルをアップロードする
Googleドライブの指定したフォルダにファイルをアップロードする
参考
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