从 Google 脚本打开 JSON 文件

open json file from google scripts

提问人:Jens Stuber 提问时间:11/17/2023 更新时间:11/20/2023 访问量:70

问:

我的 Google Drive 中有一个 JSON 文件,我想从 Google 表格中读取它。 我在工作表中打开了脚本编辑器并添加了以下功能:

function jsonTest() {
  var doc = DocumentApp.openById('1PpnL26_gx3v_sLEkOjnlyIaEIs8FE1ah');
  var body = doc.getBody().getText()
  return body.length
}

当我在工作表中调用它时,我收到一个错误。控制台告诉我,我缺少权限,但我将其添加到我的清单中:

{
  "timeZone": "Europe/Paris",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/documents"
  ]
}

我做错了什么?

谷歌应用脚本

评论

0赞 Saddles 11/17/2023
正如你所提到的,你在你的.但是,我想确认文件是如何保存到其中的。内容是存储在 Google 文档中,还是保存为 JSON 文件?我注意到您的脚本使用 Class DocumentApp,这就是我想澄清的原因。have a json filegoogle drive

答:

1赞 Cooper 11/18/2023 #1

这对我有用:

function jsonTest() {
  var doc = DocumentApp.openById('id');
  var body = doc.getBody().getText()
  Logger.log(body.length)
}
1赞 cnavar 11/20/2023 #2

替代解决方案

您正在执行的操作将不起作用,因为您使用的是自定义函数。根据 Google 表格中的自定义函数

如果自定义函数抛出错误消息,则该服务需要用户授权,因此不能在自定义函数中使用。You do not have permission to call X service.

要使用上面列出的服务以外的服务,请创建一个运行 Apps 脚本函数的自定义菜单,而不是编写自定义函数。如有必要,从菜单触发的函数将要求用户进行授权,从而可以使用所有 Apps 脚本服务。

要解决此问题,您可以按照文档中的建议进行操作,或者直接尝试如下操作:

const jsonTest = () => {
  var documentBody = DocumentApp.openById('1PpnL26_gx3v_sLEkOjnlyIaEIs8FE1ah').getBody().getText();
  SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setValue(documentBody);
}

此代码将获取包含您的文件的 Google 文档的正文,并将其值粘贴到工作表中指定的单元格上。JSON

您也可以遵循@Cooper的方法,通过使用console.log(;Logger.log();,您将能够在Google Apps脚本中看到。JSONExecution log