将文件上传到Google云端硬盘中的目录

时间:2015-02-20 19:02:11

标签: forms google-apps-script google-drive-api

我正在尝试设置一个表单,将文件上传到我的google驱动器的特定目录,而不是主目录。

我找到了一个可以上传文件的脚本,但是它可以工作,不过我希望它会进入另一个文件夹。

目前文件将进入" /" 我如何将文件转到" / new / property / uploads /"?

Google Script:

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {

  try {

    var dropbox = "Uploads";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }

    var blob = form.myFile;    
    var file = folder.createFile(blob);    
    file.setDescription("Uploaded by " + form.myName);

    return "File uploaded successfully " + file.getUrl();

  } catch (error) {

    return error.toString();
  }

}

表单脚本:

<form id="myForm">
    <input type="text" name="myName" placeholder="Your name..">
    <input type="file" name="myFile">
    <input type="submit" value="Upload File" 
           onclick="this.value='Uploading..';
                    google.script.run.withSuccessHandler(fileUploaded)
                    .uploadFiles(this.parentNode);
                    return false;">
</form>

<div id="output"></div>

<script>
    function fileUploaded(status) {
        document.getElementById('myForm').style.display = 'none';
        document.getElementById('output').innerHTML = status;
    }
</script>

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

通过driveApp获取文件夹并将其保存在那里,非常简单。

  1. 手动创建文件夹,如果你需要动态,还有一些步骤
  2. 获取ID - &gt;在浏览器中导航并打开文件夹,最后一个数字后面的最后一个数字&#34; /&#34;是文件夹的ID
  3. 使用driveApp函数getFolderById(String)选择您的文件夹Eg。 folder = DriveApp.getFolderById(ID)
  4. 在这种情况下检查文件夹是没有意义的。

答案 1 :(得分:0)

如果您想要的文件夹不存在,并且您想要创建新的子文件夹树,则需要在该文件夹中创建一个新文件夹。文件夹类具有createFolder()方法。 DriveApp类还有createFolder()方法,但是会将新文件夹放入主驱动器根目录中。因此,DriveApp和Folder都有createFolder()方法。关键是首先获得对要使用createFolder()的文件夹的引用,以创建一个新文件夹作为子文件夹。

function uploadFiles(form) {

  try {

    var dropbox = "Uploads";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      var firstLevelFolder = DriveApp.createFolder("new");
      var secondLevelFolder = firstLevelFolder.createFolder("property");
      var folder = secondLevelFolder.createFolder(dropbox);
    }

    var blob = form.myFile;    
    var file = folder.createFile(blob);    
    file.setDescription("Uploaded by " + form.myName);

    return "File uploaded successfully " + file.getUrl();

  } catch (error) {
    Logger.log('err: ' + error.toString());
    return error.toString();
  }

}