从json中获取值

时间:2017-09-05 20:13:45

标签: google-apps-script google-sheets

我正在查询DNS以检查给定域的MX记录并获得以下响应 - :

我正在使用Google Apps脚本UrlFetchApp类,现在我想要的是创建一个只包含MX记录值的数组 - : (例如 - [20 mx2.zoho.com,30 mx3.zoho.com,10 mx.zoho.com]

我该怎么做? 谢谢你的帮助。

到目前为止,我在这里

function mxLookup() {

      var ss = SpreadsheetApp.getActive()
      var sheet = ss.getSheetByName("domains")
      var data = sheet.getDataRange().getValues()
      var apiurl = "https://dns-api.org/MX/";

      for (i=1; i<data.length; i++){
        var domain = data[i][0]
        var url = apiurl+domain
        var response = UrlFetchApp.fetch(url).getContentText()
        var json = JSON.parse(response);
      }

2 个答案:

答案 0 :(得分:1)

这是使用map的完美用例(感谢@Łukasz)。

const
  inputArray = [
     {
        "ttl" : 3600,
        "type" : "MX",
        "value" : "20 mx2.zoho.com.",
        "name" : "domainname.com"
     },
     {
        "name" : "domainname.com",
        "value" : "30 mx3.zoho.com.",
        "type" : "MX",
        "ttl" : 3600
     },
     {
        "ttl" : 3600,
        "name" : "domainname.com",
        "value" : "10 mx.zoho.com.",
        "type" : "MX"
     }
  ],
  mxValues = inputArray.map(item => item.value),
  mxValues2 = [];

  for (var index=0; index<inputArray.length; index++) {
      mxValues2.push(inputArray[index].value);
  }
  
  console.log(mxValues);
  console.log(mxValues2);

答案 1 :(得分:1)

上面的答案并非完全错误,但由于ES6语法,它不适用于Apps脚本。

您可以使用地图功能编写它,如下所示:

var arr = json.map(function(each) {
  return each.value;
});

Logger.log(arr);

您可以在应用脚本项目中的.html文件中使用ES6语法,但是,您无法在.gs文件中使用它。