首页 > 解决方案 > 将文件夹 id 字符串传递给调用 DriveApp.getFolderById(id).getDateCreated() 的自定义函数时,Apps 脚本会引发错误;

问题描述

此代码将引发此错误:

例外:无效参数:id(第 2 行,文件“代码”)

在编辑器窗口的顶部以红色显示,并且仍然记录创建日期文件。这里发生了什么?

function getFolderData(id){
  let folder = DriveApp.getFolderById(id);     
  return folder.getDateCreated();
}
Logger.log(getFolderData('1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl'));

并且此代码成功运行

function getFolderData(){
  let id = '1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl';
  let folder = DriveApp.getFolderById(id);     
  Logger.log(folder.getDateCreated());
}
getFolderData();

我已经检查以确保输入是字符串类型

function getFolderData(id){
 return 'typeof SourceID: ' + typeof id;
}
Logger.log(getFolderData('1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl'));

其中记录了“[20-11-30 21:36:03:200 EST] typeof SourceID: string”,这是正确的。

标签: google-apps-script

解决方案


问题:

您的方法的问题是您试图getFolderData(id)通过脚本编辑器执行,但该函数不能作为独立函数运行,因为它需要一个参数,即id

这部分代码:

Logger.log(getFolderData('1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl'));

是正确的,但它在每个函数之外,因此它是一个全局执行。无论您决定运行什么功能,它都会被执行。

虽然问题仍然存在,但您正在尝试从需要参数的脚本编辑器中执行一个函数。

解决方案:

创建一个新函数,将其命名为您喜欢的名称并getFolderData在此函数中调用:

function runMe(){
  Logger.log(getFolderData('1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl'));
}

function getFolderData(id){
  let folder = DriveApp.getFolderById(id);     
  return folder.getDateCreated();
}

确保您已选择该runMe功能并执行它:

在此处输入图像描述

请不要忘记删除Logger.log(getFolderData('1DsSOQD52eWPnCPyuQL09KhyDpdwdJ1jl'));每个函数之外的内容,并且只在这个新创建的runMe函数中使用它。


推荐阅读