如何在 Google Apps 脚本中访问 JSON 中的特定元素?

How to access a specific element in JSON in Google Apps Script?

我需要从下面 JSON 访问特定日期的导航。例如:数据[date="20-04-2022"].nav 如何在 Google Apps 脚本中执行此操作? 标准 JSON 表示法不起作用。

{
   "meta":{
      "fund_house":"Mutual Fund",
      "scheme_type":"Open Ended Schemes",
   },
   "data":[
      {
         "date":"22-04-2022",
         "nav":"21.64000"
      },
      {
         "date":"21-04-2022",
         "nav":"21.69000"
      },
      {
         "date":"20-04-2022",
         "nav":"21.53000"
      }
   ],
   "status":"SUCCESS"
}

在你的情况下,我认为需要从data的数组中检索包含"date": "20-04-2022"的元素。那么,下面的示例脚本怎么样?

示例脚本:

const obj = {
  "meta": {
    "fund_house": "Mutual Fund",
    "scheme_type": "Open Ended Schemes",
  },
  "data": [
    {
      "date": "22-04-2022",
      "nav": "21.64000"
    },
    {
      "date": "21-04-2022",
      "nav": "21.69000"
    },
    {
      "date": "20-04-2022",
      "nav": "21.53000"
    }
  ],
  "status": "SUCCESS"
};
const search = "20-04-2022";
const res = obj.data.find(({ date }) => date == search);
const value = res && res.nav;
console.log(value) // 21.53000

  • 例如,如果总是找到搜索值,则可以使用以下脚本。

      const res2 = obj.data.find(({ date }) => date == search).nav;
    

参考:

已添加 1 个:

根据您的以下回复,

This looks like standard java script. Does not work in google apps script(script.google.com/home). Getting syntax error for this line : const res = obj.data.find(({ date }) => date == search);

我担心您没有启用 V8 运行时。 Ref 如果你不能使用 V8 运行时,下面的示例脚本怎么样?

示例脚本:

var obj = {
  "meta": {
    "fund_house": "Mutual Fund",
    "scheme_type": "Open Ended Schemes",
  },
  "data": [
    {
      "date": "22-04-2022",
      "nav": "21.64000"
    },
    {
      "date": "21-04-2022",
      "nav": "21.69000"
    },
    {
      "date": "20-04-2022",
      "nav": "21.53000"
    }
  ],
  "status": "SUCCESS"
};
var search = "20-04-2022";
var res = obj.data.filter(function (e) { return e.date == search })[0];
var value = res && res.nav;
console.log(value) // 21.53000

添加了 2 个:

根据您的以下回复,

This looks like standard java script. Does not work in google apps script(script.google.com/home). Getting syntax error for this line : const res = obj.data.find(({ date }) => date == search);

I am trying to write a google apps script to fetch data from a url. But google seems to have its own way of handling the JSON data which I am unable to figure out. developers.google.com/apps-script/guides/services/…

我了解到您的实际目标是使用 Web 应用程序检索值。如果我理解你的实际目标,下面的示例脚本怎么样?

1。示例脚本:

请将以下脚本复制并粘贴到脚本编辑器中并保存脚本。

function doGet(e) {
  var search = e.parameter.search;
  var obj = {
    "meta": {
      "fund_house": "Mutual Fund",
      "scheme_type": "Open Ended Schemes",
    },
    "data": [
      {
        "date": "22-04-2022",
        "nav": "21.64000"
      },
      {
        "date": "21-04-2022",
        "nav": "21.69000"
      },
      {
        "date": "20-04-2022",
        "nav": "21.53000"
      }
    ],
    "status": "SUCCESS"
  };
  var res = obj.data.filter(function (e) { return e.date == search })[0];
  var value = res && res.nav;
  return ContentService.createTextOutput(value);
}
  • 我认为这个示例脚本可以在有和没有 V8 运行时的情况下使用。

2。部署 Web 应用程序。

在这种情况下,请检查the official document。请设置如下。

  • Execute as: Me
  • Anyone with Google account: Anyone

在这种情况下,假设您使用的是新的IDE。请注意这一点。

3。正在测试。

请使用您的浏览器访问 URL 喜欢 https://script.google.com/macros/s/{deploymentId}/exec?search=20-04-2022。由此,返回结果值。 `