You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未开通付费服务的账号无法通过Google Apps Script访问Google Drive?

问题排查和解答

核心结论

Google并未对DriveApp服务设置付费门槛,普通个人Google账号、免费版Google账号均可正常调用该服务,无需开通Google Workspace或Google Cloud付费服务。

可逐一排查的配置项

  • 权限配置检查
    打开Apps Script项目的「项目设置」,勾选「在编辑器中显示appsscript.json清单文件」,回到编辑器查看清单文件的oauthScopes配置,确保已包含Drive相关授权scope,参考配置如下:
{
  "timeZone": "Asia/Shanghai",
  "dependencies": {},
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/spreadsheets.currentonly"
  ]
}

也可以在执行脚本触发授权时,确认授予了脚本访问Google Drive的完整权限,避免权限授予不完整导致调用被拦截。

  • 文件夹访问权限校验
    直接在浏览器地址栏输入https://drive.google.com/drive/folders/你的文件夹ID,确认当前登录的Google账号可以正常访问该文件夹,排除文件夹被删除、移至回收站、共享权限被撤销等情况。
  • 账号访问限制排查
    若使用企业/学校归属的Google账号,联系对应管理员确认后台是否限制了Apps Script调用Drive服务的权限。
    若使用个人账号,打开Google账号「安全」设置,进入「第三方应用和网站」板块,确认未限制Apps Script访问Drive的权限。
  • 基础调用测试
    新建空白独立Apps Script项目,执行如下测试代码:
function testDriveAccess() {
  console.log(DriveApp.getRootFolder())
}

若该测试代码可正常返回根文件夹对象,说明原项目存在配置问题,若测试也返回null,可排查当前网络环境是否存在Google服务访问限制。

附加代码修正

你提供的代码存在一处逻辑错误:while (files.hasNext())循环内第一行就调用console.log(file.getName()),此时file变量尚未声明赋值,会导致代码执行到此处时报错,可调整循环逻辑如下:

function getFileByNameInFolder(folderID, fileName) {
  var folder = DriveApp.getFolderById(folderID);
  var files = folder.getFiles();
  
  console.log(folder);
  console.log(files);
  while (files.hasNext()) {
    var file = files.next();
    console.log(file.getName());
    if (file.getName() == fileName) {
     return file; 
    }
  }
  return undefined;
}

内容的提问来源于stack exchange,提问作者Mor Sagmon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:00:02