google-apps-script - 所需权限 : https://www. googleapis.com/auth/spreadsheets

标签 google-apps-script google-sheets

我在 appscript 上创建了一个简单的代码,用于从 URL 中获取 Google 云端硬盘文件名

function FileName (URL) {
  var ss = SpreadsheetApp.openByUrl(URL);
  return ss.getName();
}

当我运行时出现错误:

Exception: You do not have permission to call SpreadsheetApp.openByUrl. Required permissions: https://www.googleapis.com/auth/spreadsheets (linha 6).

我已经在高级 Google 服务区域启用了 Drive 和 Sheets API,因此“https://www.googleapis.com/auth/spreadsheets”应该没问题,但事实并非如此。

我怎样才能做到这一点?

我在this link中创建了一个示例表问题复制。

最佳答案

问题说明:

您正在使用自定义函数。

official documentation 中有很好的解释。 :

If your custom function throws the error message You do not have permission to call X service., the service requires user authorization and thus cannot be used in a custom function.

正如该消息明确指出的那样,您不得在自定义函数中使用需要授权的服务,例如 SpreadsheetApp.openByUrl(URL)

还有一个表格特别指出SpreadsheetApp.openByUrl(URL);不能在自定义函数内使用:

enter image description here

解决方法:

您可以通过多种方式使用常规函数:

  1. 作为自定义菜单按钮实现,
  2. 从脚本编辑器执行它们,
  3. 通过 simple triggers 执行它们,
  4. 创建插件菜单等。

脚本的常规函数​​版本:

function FileName () {
  var URL = "spreadsheet_url"
  var ss = SpreadsheetApp.openByUrl(URL);
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.getRange('A1').setValue(ss.getName());
}

执行后(参见屏幕截图),此脚本会将 Sheet1 的单元格 A1 的值设置为电子表格文件的名称。

enter image description here

我建议您在官方文档中查找我在此脚本中使用的函数,看看它们各自的作用。

更新:

我刚刚打开您的工作表,发现您正在使用 SpreadsheetApp.openByUrl(URL); 但此方法仅适用于电子表格,因此类名为 SpreadsheetApp。如果你想打开一个文件ID那么你需要使用 getFileById(id) 。我在第一列中看到您有文件 URL,但没有方法通过 URL 打开文件。来自这样的文件的 id:

https://drive.google.com/file/d/1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp/view?usp=sharing

是:

1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp

因此你需要使用

var 文件 = DriveApp.getFileById('1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp')

代码片段如下:

function FileName () {
  var URL = "1d-2L5kGZWbUa_p7iLgBBa59QqZiyIhgp"
  var file = DriveApp.getFileById(URL);
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  sheet.getRange('B1').setValue(file.getName());
}

请熟悉 GAS,因为这个问题刚刚成为一个需要更多关注的问题。

关于google-apps-script - 所需权限 : https://www. googleapis.com/auth/spreadsheets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64895519/

相关文章:

python - 如何在不提示授权我的脚本的情况下设置对 Google 表格的身份验证?

javascript - 是否可以一次隐藏 Google 电子表格的多行?

google-apps-script - 将文件夹中所有可用的 xls 文件转换为 "Google Doc Spreadsheets"?

javascript - 我无法通过谷歌脚本发送带有 pdf 作为附件的电子邮件

javascript - 如何使用 Google 表格脚本从数组返回值

javascript - 分析 API 包括子页面

google-apps-script - 在 Google Apps 脚本中使用 Google 任务 API - 未配置访问权限

google-apps-script - Google 表格脚本切换语句

google-apps-script - 自定义弹出消息

javascript - 如何使用谷歌应用程序脚本获取谷歌表格中特定列的最后一个单元格?