首页 > 解决方案 > 如果没有付费帐户,就无法从 Google Apps 脚本访问 Google Drive?

问题描述

我似乎无法使用 Google Apps Script Drive 服务访问我的 Google Drive。This:DriveApp.getFolderById('1Evf...Kein')不返回任何值,只是返回 null。

例如,我的库中的这个函数曾经可以工作,但现在在调用 DriveApp 时什么也不返回:

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

结果在console.lor中:

在此处输入图像描述

禁止使用 DriveApp 服务。

我尝试了独立的应用程序脚本和工作表绑定的应用程序脚本 - 不工作。

我确信它在过去对我过去的项目有效!

仔细阅读,除非您使用它们的付费帐户(Google Workspaces 或 Google Cloud),否则 Google 是否有可能阻止使用这些服务?

还是我错过了其他东西?

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

解决方案


您的 DriveApp 服务没有停止工作。根据您的代码,由于您没有使用console.log(formatOrObject, values)在执行日志中成功记录 Apps Script 对象,因此预计它将显示在执行console.log(folder);日志中 console.log(files);{}

{}使用控制台显示console.log(folder);并不意味着 DriveApp 服务不工作。您可以通过将其替换为Logger.log(folder). 您的代码失败的主要问题是因为您调用了console.log(file.getName());whilefile变量尚未使用Folder对象定义/初始化(返回files.next())。

它应该是这样的:

  while (files.hasNext()) {
    
    var file = files.next();
    console.log(file.getName());

    if (file.getName() == fileName) {
     return file; 
    }
  }

推荐阅读