javascript - 从 Google 电子表格单元格中解析 Json

标签 javascript json google-apps-script google-sheets

在谷歌电子表格单元格中,我有这个文本:
{"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"]};
它来自 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;

}

此函数始终返回未定义。如果我添加此代码
" 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"]};
"

发挥作用 - 然后是它的工作。但我需要这个函数来动态地从谷歌电子表格单元格中获取值(value)。

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

最佳答案

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

示例脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSheet();
  var obj = JSON.parse(ss.getRange("A1").getValue().replace(";", ""));
  var res = parseTargeting(obj);
  Logger.log(res)
}

笔记 :
  • 在此脚本中,它假设您的 json 对象位于单元格“A1”中。
  • 当您使用此脚本时,请将其复制并粘贴到带有 json 对象的电子表格上的脚本编辑器中。

  • 如果我误解了你的问题,请告诉我。我想修改它。

    编辑 :
    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
    }
    

    笔记 :
  • 对于您的 sample 表,“A4”和“A7”的值在 var interestsBasics = content["flexible_spec"][0]["interests"][0]["name"]; 处出现错误。 .因为没有 flexible_spec 的属性在值(value)。
  • 关于javascript - 从 Google 电子表格单元格中解析 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49040127/

    相关文章:

    python - 使用 Python 访问 Google 电子表格以供服务器到服务器使用

    javascript - 是否可以以编程方式配置 MongoDB?

    javascript - 转换后删除 svg 对象

    javascript - 连接两个json文件

    java - 如何遍历一个json对象的所有子节点?

    javascript - 在Google表格中,如何将A列中的#N/A替换为B列中的相应值

    google-apps-script - 每日 Google Apps 脚本服务配额限制如何适用?

    javascript - Facebook - JavaScript SDK - 如何自动请求许可

    javascript - 创建一个名称字符串数组

    android - 在android中使用json显示来自url的图像