LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Thursday, January 4, 2018

Googleドライブの指定したフォルダにファイルをアップロードする


ローカルのファイルをGoogle Driveの指定フォルダにアップロードする
このようなフォームを作ってみる


フォームの例(画像)

アップロードする手順
  1. 「ファイルを選択」をクリックする
  2. ローカルファイルの選択画面が開く
  3. 任意のファイルを選択して「開く」をクリックする
  4. 「選択されていません」に選択したファイル名が表示される
  5. 「Submit」をクリックする
  6. 指定したフォルダにファイルがアップロードされる
  7. アップロードしたファイルの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

Latest post

英文から不要な記号を削除したい(正規表現)

今回やること Hello, how's it going? から不要な , と ? を削除して Hello how's it going にする。