LANG SELRCT

コードを書く場所

2019年6月13日木曜日

ファイルを指定フォルダに追加したい(UI)


Google ドライブのファイルは複数のフォルダに入れておくことができます

ここでは指定したフォルダにファイルを「追加」するUIを作ります

「移動」ではないため、元のフォルダにもファイルは残ります






コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile('index');
}

function addFileToFolder(file_id, folder_id) {
  var folder = DriveApp.getFolderById(folder_id);
  var file = DriveApp.getFileById(file_id);
  folder.addFile(file);
}

意訳
この機能がやること
指定したHTMLファイルを表示する


この機能がやること
Googleドライブ内でfolder_idのフォルダを取得して
file_idのファイルを取得して
フォルダに追加する





index.html
<!DOCTYPE html>
<html>
  <body>
    Add file to target folder<br>
    <input type="text" id="file_url"> FILE URL<br>
    <input type="text" id="folder_url"> FOLDER URL<br>
    <button id="bt">Add</button><br>
    <a id="folder_link" target="_blank"></a>
    
    <script>
    elem('bt').onclick = btClicked;
    
    function elem(id) {
      return document.getElementById(id);
    }
    
    function btClicked() {
      elem('folder_link').textContent = '';
      var file_url = elem('file_url').value;
      var folder_url = elem('folder_url').value;
      
      var file_id = file_url.split('/d/')[1].split('/')[0];
      var folder_id = folder_url.split('/folders/')[1];
      
      google.script.run
      .withFailureHandler(onFailure)
      .withSuccessHandler(onSuccess)
      .withUserObject(folder_url)
      .addFileToFolder(file_id, folder_id);
    }
    
    function onSuccess(result, folder_url) {
      elem('folder_link').href = folder_url;
      elem('folder_link').textContent = folder_url;
    }

    function onFailure(e) {
      alert([e.message, e.stack]);
    }
    </script>
  </body>
</html>