Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2018年1月4日木曜日

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

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...