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

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の入力は不要ではないかと思いましたが、ファイルは複数の親フォルダを持てるため、結局どのフォルダかの指定が必要になり、入力欄を作っています。



関連記事

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

Latest post

Googleドキュメントに見出しを追加したい

今回の例では、ドキュメントの末尾に「見出しD」 を追加します。 見出しA, B, C, Dのスタイルは、見出し3 ( HEADING3 ) に設定しています。  下記Code.gsの  GOOGLE_DOCUMENT_URL を設定して  addHeadingToEnd()  を...