将文件上传到驱动器-设置新的文件夹ID问题

时间:2018-08-11 11:26:25

标签: javascript html google-apps-script

我正在尝试制作HTML以将文件上传到驱动器。每次上传都会创建一个新文件夹。我的问题是我无法为每次上传设置新的文件夹ID。它根据输入+日期创建一个新文件夹。我要在SS上保存一个新的文件夹ID。如何通过HTML上的SS单元格值.setParent

Code.gs

/*   
Fetch the oAuthToken 
*/

function getOAuthToken() {
    DriveApp.getRootFolder()
    Logger.log(ScriptApp.getOAuthToken())
    return ScriptApp.getOAuthToken();
}


function doGet(){
return HtmlService.createTemplateFromFile('drivePicker') 
      .evaluate()
      .setTitle('Upload Files')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);  
}

function createFolder(form) { 
   var nameBox = form.subfolder;
   var d = new Date();
   var time = d.toLocaleTimeString()
   var curr_date = d.getDate();
   var curr_month = d.getMonth() + 1 ;
   var curr_year = d.getFullYear();
   var tDate = curr_year + "/" + curr_month + "/" + curr_date + " - " + time;  

   var dest = DriveApp.getFolderById("main Folder ID").createFolder(nameBox+" "+tDate);
   var destID = dest.getId();

   var ss = SpreadsheetApp.openById('SS ID');
   var sheet = ss.getSheetByName("Name");
   sheet.getRange(1,1).setValue(destID);
}

drivePicker.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" 
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script 
    src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> 
    </script>
    <style>
        #attachmentTable { 
          background: white;
        }
        tr th,tr td {
          text-align:center;
        }
    </style>
  </head>
  <body style='font-family: cursive;'>
    <div align="center">
    <h1>Please upload the files</h1>
    <p><img src="http://www.free-icons-download.net/images/upload-logo-icon- 
    68584.png" style="width:500px;height:500px;transform:rotate(0deg);margin- 
    top:50px"></p>
    <BR>

    <form>
      <input type="text" name="subfolder" id="subfolder" placeholder="Your name..">
    </form>
    <center><button onclick='formSubmit();getOAuthToken()' style="margin- 
    top:150px;outline:0;" class="btn btn-success">Upload File(s)</button> 
    </center>
    <div class='table-responsive' style="display:none;" id="attachmentTableDiv">
    <table id="attachmentTable" class="table table-bordered" 
    style="width:900px;margin:20px auto;float:none;">
      <thead>
        <tr style="background:#f1f1f1;">
          <th>Title</th>
          <th>ID</th>
          <th>URL</th>
          <th>Date Created</th>
        </tr>
      </thead>
      <tbody>

      </tbody>
    </table>
    </div>
  </div>
    <script type="text/javascript"> 
     function formSubmit() {            
        google.script.run.withSuccessHandler().createFolder(document.forms[0]);
            }
    </script>
    <script>
    var DEVELOPER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'; 
    var pickerApiLoaded = false;

    /**
     * Loads the Google Picker API.
     */
    function onApiLoad() {
      gapi.load('picker', {'callback': function() {
        pickerApiLoaded = true;
      }});
     }


    function getOAuthToken() {

      google.script.run.withSuccessHandler(createPicker).getOAuthToken();
    }

    function createPicker(token) {
      if (pickerApiLoaded && token) {

       var uploadview  = new google.picker.DocsUploadView().setParent('NEW FOLDER ID'); //How to set the ID from the SS cell A1 ?????
       var picker = new google.picker.PickerBuilder()
            .addView(uploadview)
            //.addView(all)
            .hideTitleBar()
            //.setLocale('nl') //--Regional language settings
            //.enableFeature(google.picker.Feature.NAV_HIDDEN)
            .setOAuthToken(token)
            .setSize(536, 350)
            .setDeveloperKey(DEVELOPER_KEY)
            .setCallback(pickerCallback)
            .setOrigin(google.script.host.origin)
            .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
            .build();
        picker.setVisible(true);
      } else {
        showError('Unable to load the file picker.');
      }
    }

    /**
     * A callback function that extracts the chosen document's metadata from the response object. 
     */
    function pickerCallback(data) {
      var action = data[google.picker.Response.ACTION];
      if (action == google.picker.Action.PICKED) {
        for(var i in data[google.picker.Response.DOCUMENTS]){
        var doc = data[google.picker.Response.DOCUMENTS][i];
        var id = doc[google.picker.Document.ID];
        var url = doc[google.picker.Document.URL];
        var title = doc[google.picker.Document.NAME];
        var dateCreated = doc[google.picker.Document.LAST_EDITED_UTC];
        var date = new Date(dateCreated);
        date=date.toLocaleString();
        $('#attachmentTable tbody').append("<tr><td>"+title+"</td><td>"+id+"</td><td><a href='"+url+"' target='_blank'>Link</a></td><td>"+date+"</td></tr>");
        $('#attachmentTableDiv').show();
      }
    }
}
  </script>
  <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  <script>google.load("picker", "1",{callback:function(){pickerApiLoaded 
  =!0}});</script>
  </body>
</html>

0 个答案:

没有答案