簡體   English   中英

Google Apps腳本數組問題

[英]Google apps script array issues

我正在研究一個應用程序腳本,該腳本將xml數據加載到函數中,並根據用戶輸入解析數據。

xml簡單明了:

<?xml version="1.0" encoding="UTF-8"?>
<Records>
    <Record>
        <username>jjohnson</username>
        <firstName>John</firstName>
        <lastName>johnson</lastName>
        <email>john@someurl.com</email>
    </Record>
    <Record>
        <username>bsimmons</username>
        <firstName>ben</firstName>
        <lastName>simmons</lastName>
        <email>ben@someurl.com</email>
    </Record>
    ...etc
</Records>

該函數采用XML並將數據加載到對象數組中,並嘗試根據用戶名解析數據並將內容顯示為google表格中的一行。

function XMLCONTACT(username) {
var url = '<XML source>';
var ContactXml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(ContactXml);
var root = document.getRootElement();
var arr = [];
var XMLChildren = root.getChildren("Record");

for (var i = 0; i < XMLChildren.length; i++) {    
    arr.push({ 
        username: XMLChildren[i].getChild("username").getText(),
        firstName: XMLChildren[i].getChild("firstName").getText(),
        lastName: XMLChildren[i].getChild("lastName").getText(),
        email: XMLChildren[i].getChild("email").getText()
   });
}

var newarr = []

for(var j= 0; j < arr.length; j++){
  if(arr[j].username === username ){
        newarr.push(arr[j]);
  }
}
    return newarr;
}

問題是當函數運行時,什么也不會返回。 我可以獲取工作表來顯示沒有對象的數組內容,但不能顯示過濾的輸出。

謝謝你的幫助!

您要將XMLCONTACT()的返回值XMLCONTACT()電子表格。 如果我了解您的要求,那么該修改如何? 從您的腳本中,我認為您可能想使用XMLCONTACT()作為Spreadsheet的自定義函數。 因此,請進行如下修改。

它將值返回為二維數組。

來自:

var newarr = []
for(var j= 0; j < arr.length; j++){
  if(arr[j].username === username ){
    newarr.push(arr[j]);
  }
}
return newarr;

至 :

var newarr = [];
for(var j= 0; j < arr.length; j++){
  if(arr[j].username === username ){
    newarr.push([arr[j].username, arr[j].firstName, arr[j].lastName, arr[j].email]);
  }
}
return newarr;

注意 :

  • 它假定此腳本是Spreadsheet的容器​​綁定腳本。
  • 例如,當您使用它時,請將=XMLCONTACT2("jjohnson")放在電子表格中的單元格中。
  • 如果要更改值的排列,請修改newarr.push([arr[j].username, arr[j].firstName, arr[j].lastName, arr[j].email]); 如果您聽不懂,請告訴我。

如果我誤解了您想做什么,請告訴我。 我想修改我的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM