Javascript 从Google电子表格单元解析Json

Javascript 从Google电子表格单元解析Json,javascript,json,google-apps-script,google-sheets,Javascript,Json,Google Apps Script,Google Sheets,在google电子表格单元格中,我有以下文本: {“年龄上限”:65,“年龄下限”:18,“弹性规格”:[{“兴趣”:[{“id”:“6002867432822”,“姓名”:“美容”},{“id”:“6002991733794”,“姓名”:“美容与护理”},{“id”:“6003177110133”,“姓名”:“自然美”},{“id”:“6003211042524”,“姓名”:“健康与美容”},{“id”:“6003393295343”,“姓名”:“健康与美容”},{“id”:“健康与美容”},

在google电子表格单元格中,我有以下文本:

{“年龄上限”:65,“年龄下限”:18,“弹性规格”:[{“兴趣”:[{“id”:“6002867432822”,“姓名”:“美容”},{“id”:“6002991733794”,“姓名”:“美容与护理”},{“id”:“6003177110133”,“姓名”:“自然美”},{“id”:“6003211042524”,“姓名”:“健康与美容”},{“id”:“6003393295343”,“姓名”:“健康与美容”},{“id”:“健康与美容”},{“姓名”:“6003460329503”,“美丽皮肤”},{“id”:“6004111438209”,“姓名”:“面部护理”}],“性别”:[2],“地理位置”:{“国家”:[“SK”],“位置类型”:[“家”,“最近”],“地点”:[2,33],“目标优化”:“无”,“发布者平台”:[“脸谱”],“脸谱位置”:[“提要”,“右手专栏”,“即时文章”],“设备平台”:[“移动”、“桌面”]

来自Facebook API的JSON来自Supermetrics

现在我想解析此单元格,但此代码不起作用:-/

我正在电子表格“=parseTargeting(A1)”中使用此函数

以及脚本编辑器中的此自定义函数

 function parseTargeting(jsonData) {




    var flexible_spec = jsonData["flexible_spec"];
    var maxAge = jsonData["age_max"];
    var minAge = jsonData["age_min"];

    var interestsBasics = jsonData["flexible_spec"][0]["interests"][0]["name"];


    var interestsBasicsCelkem = jsonData["flexible_spec"][0]["interests"].length-1;
    var interests = "";
    var output = [];

    for(var i = 0; i<=interestsBasicsCelkem; i++){

      interests += jsonData["flexible_spec"][0]["interests"][i]["name"]+ "\n";  


    }

    var returnVek = "Vek:"+minAge + " - " + maxAge+" \n";
    var returnInterests = "Zájmy:"+interests;


    var returnString = returnVek + returnInterests;



  return returnString;

}
发挥作用——然后是它的工作。但我需要这个函数来动态地从google电子表格单元格中获取值


我不明白:-/你能帮我从谷歌电子表格单元解析JSON吗?

这个示例脚本怎么样?对于json对象,有
位于对象的末尾。这样,它就无法被解析。所以
将被删除并对其进行解析

示例脚本: 注:
  • 在这个脚本中,它假设json对象位于单元格“A1”中
  • 使用此脚本时,请使用json对象将其复制并粘贴到电子表格上的脚本编辑器中
如果我误解了你的问题,请告诉我。我想修改它

编辑:
函数解析目标(范围){
var content=JSON.parse(range.replace(“;”,”“);//修改
如果(范围!=“未定义”){
变量flexible_spec=内容[“flexible_spec”];
var maxAge=内容[“年龄最大值”];
var minAge=含量[“年龄”];
var interestbasics=content[“flexible_spec”][0][“interests”][0][“name”];
Logger.log(兴趣基础);
var InterestsBasicCelkem=内容[“灵活规范”][0][“兴趣”]。长度为1;
var利息=”;
var输出=[];

对于(var i=0;iThx用于回复,但它不起作用:-/有一个指向测试电子表格的链接-你能看看这个问题吗-在这个电子表格中有一列包含数据。我需要将这些列解析到另一列。在编辑器中,脚本是我的脚本,你能看看并告诉我出了什么问题吗?我花了很多时间处理这个问题,我不知道我不明白:-/thx@libor对于给您带来的不便,我深表歉意。同时感谢您共享示例表。我注意到您脚本中的
returnString
可能是您想要返回的值。因此我修改了您的脚本并更新了我的答案。请确认。如果该值不是您想要的,我可以询问您想要的输出吗?我会i’我想通过了解它来修改。太好了,谢谢你,现在它正在工作!非常感谢,我很感激it@libor欢迎。谢谢你让我知道。如果你的问题解决了,请按“接受”按钮。与你有相同问题的其他人也可以将你的问题作为可以解决的问题。如果你没有找到e按钮,请随时告诉我。@libor谢谢您的回复。
" var jsonData = {"age_max":65,"age_min":18,"flexible_spec":[{"interests":[{"id":"6002867432822","name":"Beauty"},{"id":"6002991733794","name":"Beauty & Care"},{"id":"6003177110133","name":"Natural Beauty"},{"id":"6003211042524","name":"Health and Beauty Care"},{"id":"6003393295343","name":"Health And Beauty"},{"id":"6003460329503","name":"Beautiful Skin"},{"id":"6004111438209","name":"Facial care"}]}],"genders":[2],"geo_locations":{"countries":["SK"],"location_types":["home","recent"]},"locales":[2,33],"targeting_optimization":"none","publisher_platforms":["facebook"],"facebook_positions":["feed","right_hand_column","instant_article"],"device_platforms":["mobile","desktop"]};
"
function myFunction() {
  var ss = SpreadsheetApp.getActiveSheet();
  var obj = JSON.parse(ss.getRange("A1").getValue().replace(";", ""));
  var res = parseTargeting(obj);
  Logger.log(res)
}
function parseTargeting(range) {
  var content = JSON.parse(range.replace(";", "")); // Modified
  if( range != "undefined" ){
    var flexible_spec = content["flexible_spec"];
    var maxAge = content["age_max"];
    var minAge = content["age_min"];
    var interestsBasics = content["flexible_spec"][0]["interests"][0]["name"];
    Logger.log(interestsBasics);
    var interestsBasicsCelkem = content["flexible_spec"][0]["interests"].length-1;
    var interests = "";
    var output = [];
    for(var i = 0; i<=interestsBasicsCelkem; i++){
      interests += content["flexible_spec"][0]["interests"][i]["name"]+ "\n";  
    }
    var returnVek = "Vek:"+minAge + " - " + maxAge+" \n";
    var returnInterests = "Zájmy:"+interests;
    Logger.log(returnInterests);
    var returnString = returnVek + returnInterests;
  } else {
    var returnString = "No data";
  }
  return returnString; // Added
}