我无法从任何文件夹访问createFile方法。我想通过URL

问题描述 投票:1回答:1
将图像文件保存在gdrive中

我想从任何URL上载特定驱动器中的图像文件。我无法从文件夹获取createfile方法。该方法甚至没有显示。

这是我的代码:

    function downloadFile() {

      var fileName = "";
      var fileSize = 0;

      var response = UrlFetchApp.fetch('https://drive.google.com/open?id=1M_OcuVU71GAizO3TnzLKE24VnqEfiOws', {muteHttpExceptions: true});
      var rc = response.getResponseCode();

      if (rc == 200) {
        var fileBlob = response.getBlob()
        var folder = DriveApp.getFilesByName('101');
        if (folder != null) {
          var file = createFile(folder)
          fileName = file.getName();
          fileSize = file.getSize();
        }
      }

      var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
      return fileInfo;
    }

    function createFile(folderName) {
      var folder = DriveApp.getFoldersByName(folderName);
      folder.createFile(fileBlob;
    }
google-apps-script
1个回答
0
投票

您似乎在代码中有一些错误:

  1. createFile()函数中,您没有关闭folder.createFile(fileBlob)调用的括号。

  2. 您没有将Blob传递给createFile()函数。

  3. [folderName是FilesIterator对象(请参阅DriveApp.getFilesByName()的返回类型),但之后将其用作字符串。

您的两个错误均已修复的代码应如下所示:

function downloadFile() {

  var fileName = "";
  var fileSize = 0;

  var response = UrlFetchApp.fetch('https://drive.google.com/open?id=1M_OcuVU71GAizO3TnzLKE24VnqEfiOws', {muteHttpExceptions: true});
  var rc = response.getResponseCode();

  if (rc == 200) {
    var fileBlob = response.getBlob();
    var folderIterator = DriveApp.getFilesByName('101');
    if (folderIterator.hasNext()) {
      var file = folderIterator.next().createFile(fileBlob);
      fileName = file.getName();
      fileSize = file.getSize();
    }
  }

  var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
  return fileInfo;
}

[请注意您的createFile()函数已被删除,因为它不需要。要检查文件夹是否存在,在迭代器中调用hasNext()方法,然后使用next()检索实际文件夹。

此外,请考虑使用createFile(name, content)将想要的任何名称传递给新创建的文件>

© www.soinside.com 2019 - 2024. All rights reserved.