Как я могу ускорить приведенный ниже код? Я считаю, что метод Array Map ускорит работу, но я не знаю, как это реализовать из-за вложенного цикла. Может быть, есть какой-то другой способ, о котором я не знаю? Я больше знаком с VBA и очень медленно пытаюсь изучить Google Script!
var document = XmlService.parse(response);
var root = document.getRootElement();
var NS = XmlService.getNamespace("urn:ebay:apis:eBLBaseComponents");
var ack = root.getChildText('Ack', NS);
var time = root.getChildText('Timestamp', NS);
var version = root.getChildText('Version', NS);
var build = root.getChildText('Build', NS);
var shortmessage = root.getChildText('ShortMessage', NS);
var longmessage = root.getChildText('LongMessage', NS);
var sr = root.getChildren('SaleRecord', NS);
for (var i = 0; i < sr.length; i++) {
var orderids = sr[i].getChildren('SellingManagerSoldTransaction', NS);
for (var L = 0; L < orderids.length; L++) {
var srn = orderids[L].getChild('SaleRecordID', NS).getText();
var sku = orderids[L].getChild('CustomLabel', NS).getText();
var title = orderids[L].getChild('ItemTitle', NS).getText();
var qty = orderids[L].getChild('QuantitySold', NS).getText();
var lineitem = orderids[L].getChild('OrderLineItemID', NS).getText();
var name = sr[i].getChild('ShippingAddress', NS).getChild('Name', NS).getText();
var pcode = sr[i].getChild('ShippingAddress', NS).getChild('PostalCode', NS).getText();
var status = sr[i].getChild('OrderStatus', NS).getChild('CheckoutStatus', NS).getText();
var paidtime = sr[i].getChild('OrderStatus', NS).getChild('PaidTime', NS).getText();
var shipped = sr[i].getChild('OrderStatus', NS).getChild('ShippedStatus', NS).getText();
var email = sr[i].getChild('BuyerEmail', NS).getText();
var price = sr[i].getChild('SalePrice', NS).getValue();
var totprice = sr[i].getChild('TotalAmount', NS).getValue();
sheet.appendRow([srn, sku, title, qty, price, totprice, lineitem, name, pcode, status, paidtime, shipped, email]);
}
XML Response Example:
sheet.appendRow()
. Ознакомьтесь с рекомендациями в документации. - person TheMaster   schedule 08.10.2020sheet.appendRow()
? Погуглив, я нашел еще одну страницу в стеке, где предлагалось использоватьrange.setValues(array)
. Может быть, я должен изучить это? - person Razz   schedule 08.10.2020
- person TheMaster   schedule 08.10.2020
- person TheMaster   schedule 08.10.2020.push
. Я добавил и пустой массив перед циклом, заменил.appendRow()
на '.push()', затем после того, как цикл добавилsheet.getRange(sheet.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr);
, и все готово, все работает. Но, что более важно, оооочень быстрее, чем раньше. Спасибо, парни! - person Razz   schedule 09.10.2020