如何在 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
。由此,返回结果值。
`
我需要从下面 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
。由此,返回结果值。
`