LANG SELRCT

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

Saturday, June 15, 2019

ファイルを指定フォルダに移動する(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

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...