Google 表格中的 importdata() 包装器

Wrapper around importdata() in Google Sheets

我正在尝试在 code.gs 中围绕 Google Sheets 的 importdata() 编写包装器:

100 
101  function cryptofinance(token) {
102     var currentCell = SpreadsheetApp.getCurrentCell();
103     currentCell.setValue('=importdata("https://cryptoprices.cc/"+ token)');
104  }
105
106 ...

想法是从价差sheet中的任何sheet调用函数来获取任何加密货币代币的价格:

    |          A
+---+-------------------------+
| 1 |  =cryptofinance("aion") |
+---+-------------------------+

我在尝试此操作时遇到错误:

    |          A
+---+-------------------------+
| 1 |  #ERROR                 |
+---+-------------------------+

#ERROR Exception: You do not have permission to perform that action. (line 102).

为什么会这样,我该如何解决?

Apps 脚本在 运行 运行时会假定某些权限,但在某些情况下,您需要使用正确的 OAuth 权限手动更新 appsscripts.json 以授予访问数据的权限。

要显示您的 appsscripts.json,导航到您的项目设置并切换选项“在编辑器中显示 'appsscript.json' 清单文件”。这应该会在 Apps 脚本的边栏中显示它。

一旦进入appsscript.json,添加

"oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets",
 ]

您可以阅读更多相关信息here

试试这个:

function cryptofinance(token = "AION") {
 //Logger.log(UrlFetchApp.fetch(`https://cryptoprices.cc/${token}/`));
 return UrlFetchApp.fetch(`https://cryptoprices.cc/${token}/`).getContentText();
}

自定义函数可用于 return 值、句点。

自定义函数不能用于执行任何需要 运行 授权的方法,也不能使用自定义函数修改包含公式的单元格/区域的属性。参考https://developers.google.com/apps-script/guides/sheets/functions

您可以在自定义函数中使用 UrlFetchApp 服务来调用外部服务,但您仍然有自定义函数的限制,即 30 秒的执行时间限制。

相关

  • Function from script editor works fine but not from sheets custom function