2017-09-05 39 views
0

我查詢DNS檢查給定域的MX記錄的值,並獲得以下應答爲:擷取來自JSON

我使用谷歌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); 
     } 

回答

1

上面的答案是不完全的錯,而是因爲ES6語法也不會與Google Apps腳本工作英寸

你可以用下面的地圖功能寫:

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

Logger.log(arr); 

您可以使用.html文件的ES6語法的應用程序腳本的項目,但是,你不能在使用它。 gs文件。

+0

謝謝你,到目前爲止我在這裏,不知道如何讓所有的M​​X值 功能mxLookup(){ 變種SS = SpreadsheetApp.getActive() VAR片= ss.getSheetByName( 「域」) VAR數據=表.getDataRange()。getValues() var apiurl =「https://dns-api.org/MX/」; 爲(I = 1; I

+0

所以,只需在你的下面直接使用我的代碼即可。如您在原始問題中所要求的那樣,將您的'json'數組映射到變量'arr'中。 –

+0

謝謝@jordan它的工作。你推薦任何參考材料來理解它,這是一種新手。 - –

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);

+0

或者只是映射:const mxValues = inputArray.map(entry => entry.value); –

+0

(咳嗽)當然,地圖...我怎麼能忘記地圖? (咳嗽) – Thijs

+0

謝謝,當我在Google Apps腳本編輯器中嘗試時,它不起作用。 –