LANG SELRCT

コードを書く場所

2019年6月15日土曜日

ファイルを指定フォルダに移動する(UI)


移動するメソッドはなかったので、ここでは移動先フォルダに追加して元フォルダから削除することで「移動」を実現しています。

FILE URL:移動したいファイル
FROM FOLDER URL:元フォルダ
TO FOLDER URL:移動先フォルダ



こういうUIを作りたい





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

function moveFileToFolder(file_id, from_folder_id, to_folder_id) {
  var file = DriveApp.getFileById(file_id);
  var from_folder = DriveApp.getFolderById(from_folder_id);
  var to_folder = DriveApp.getFolderById(to_folder_id);
  to_folder.addFile(file);
  from_folder.removeFile(file);
}




index.html
<!DOCTYPE html>
<html>
  <body>
    move file to target folder<br>
    <input type="text" id="file_url"> FILE URL<br>
    <input type="text" id="from_folder_url"> FROM FOLDER URL<br>
    <input type="text" id="to_folder_url"> TO FOLDER URL<br>
    <button id="bt">Move</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 from_folder_url = elem('from_folder_url').value;
      var to_folder_url = elem('to_folder_url').value;
      
      var file_id = file_url.split('/d/')[1].split('/')[0];
      var from_folder_url = from_folder_url.split('/folders/')[1];
      var to_folder_url = to_folder_url.split('/folders/')[1];
      
      google.script.run
      .withFailureHandler(onFailure)
      .withSuccessHandler(onSuccess)
      .withUserObject(to_folder_url)
      .moveFileToFolder(file_id, from_folder_url, to_folder_url);
    }
    
    function onSuccess(to_folder_url) {
      elem('folder_link').href = to_folder_url;
      elem('folder_link').textContent = to_folder_url;
    }

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


補足

ファイルIDから親フォルダを取得すればFROM FOLDER URLの入力は不要ではないかと思いましたが、ファイルは複数の親フォルダを持てるため、結局どのフォルダかの指定が必要になり、入力欄を作っています。



関連記事

特定のフォルダ内のファイルを別のフォルダに移動する