【问题标题】:cannot get folder created by another apps script on google drive无法获取由谷歌驱动器上的另一个应用程序脚本创建的文件夹
【发布时间】:2020-06-20 16:41:52
【问题描述】:

使用以下应用程序脚本功能,我可以在 google drive 中成功创建文件夹:

function uploadFileToGoogleDrive(data, file, name, email) {  

    var parentFolderId = "FOLDER_ID";
    var parentFolder = DriveApp.getFolderById(parentFolderId);
    var subfolder;

        try {
    subfolder = parentFolder.getFoldersByName([name, email].join(" ")).next();
    }
    catch(e) {
    subfolder = parentFolder.createFolder([name, email].join(" "));
    }
      var contentType = data.substring(5,data.indexOf(';')),
        bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)),
        blob = Utilities.newBlob(bytes, contentType, file),
        file = subfolder.createFile(blob);

          file = subfolder.createFile(file, data);
   Logger.log(subfolder);  
      return "OK";
}

我想使用以下脚本访问该文件夹:

function downloadFile(e) {  
  var parentFolderId = "FOLDER_ID";
  var parentFolder = DriveApp.getFolderById(parentFolderId);

 var subfolderId;
 var subfolders = parentFolder.getFoldersByName([name, email].join(" "));

while (subfolders.hasNext()) {
  var folder = subfolders.next();
  Logger.log(folder.getId());
}
}

appsscript.json 用于 uploadFileToGoogleDrive:

{
  "timeZone": "Europe/Bucharest",
  "dependencies": {
  },
  "webapp": {
    "access": "ANYONE_ANONYMOUS",
    "executeAs": "USER_DEPLOYING"
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"
}

appsscript.json 用于下载文件:

{
  "timeZone": "Europe/Bucharest",
  "dependencies": {
  },
  "webapp": {
    "access": "ANYONE_ANONYMOUS",
    "executeAs": "USER_DEPLOYING"
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly"],
  "runtimeVersion": "V8"
}

脚本可以访问使用 google drive Web 创建的文件夹! 但无法获取其他应用脚本创建的文件夹。

请注意,这两个功能(上传和下载)位于不同的谷歌应用脚​​本中。

【问题讨论】:

  • 如果提供了 1.Permissions/scopes 授予每个脚本的问题会更好。 2. 引用准确的错误信息,而不是对错误的任何主观推断
  • 感谢 TheMaster agian 的帮助,许可(https://www.googleapis.com/auth/drive.readonlyhttps://www.googleapis.com/auth/drive 已授予第二个脚本,但当我授予第一个脚本时它停止工作。2. 没有错误,脚本一直在等待日志
  • 你能edit这些细节进入你的问题吗? 2.应该在view>stackdriver logs中记录。
  • 在堆栈驱动程序日志中:没有可用于此执行的日志。
  • 您需要清除顶部的过滤器。您是否正在访问视图>堆栈驱动程序日志记录?不要去查看>执行>日志。 3. 上传的文件也可能需要一些时间才能显示出来。在while调用之前尝试添加Logger.log(subfolders.hasNext())

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


【解决方案1】:

感谢@alberto vielma,正如@TheMaster 所建议的那样,我的问题出在name and email,一个隐藏的“空格”错误地出现在它们的字符串值中,这会阻止它们与文件夹名称匹配。谢谢大家。。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多