2016-06-30 3 views
-1

У меня есть сценарий, который извлекает данные из Zillow в документ google ... см. Ниже. Он отлично справился в течение нескольких лет, но в последнее время прекратил работать. Кажется, что он работает, но занимает много времени, и данные не заполняются. Идентификатор Zillow находится в столбце B активного листа, и согласно сценарию Zestimate должен быть записан в столбце 48. Я заменил свой ZWS-ID на «X1-XXXXXXXXX_XXXX»Zillow и Google Script

Любая помощь с благодарностью.

Благодаря KIWI

function getZillowEstimates() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 
    var values = rows.getValues(); 

    var specificRow = "" 
    var endRow; 
    if(specificRow == "") 
    { 
    specificRow = 1; 
    endRow = numRows; 
    } 
    else 
    { 
    specificRow = specificRow - 1; 
    endRow = specificRow; 
    } 
    for (var i = specificRow; i <= endRow; i++) 
    { 
    try 
    { 
     var row = values[i]; 
     var response = UrlFetchApp.fetch("http://www.zillow.com/webservice/GetZestimate.htm?zws-id=X1-XXXXXXXXX_XXXX&zpid=" + row[1]); 
     var xmlDoc = XmlService.parse(response.getContentText()); 
     var documentElement = xmlDoc.getRootElement(); 
     var destinationRange = sheet.getRange(i + 1, 48, 1, 1); 
     if(null != documentElement) 
     { 
     var responseElement = documentElement.getChild("response"); 
     if (null != responseElement) 
     { 
      var zestimateElement = responseElement.getChild("zestimate"); 
      if(null != zestimateElement) 
      { 
      var amountElement = zestimateElement.getChild("amount"); 
      if(null != amountElement) 
      { 
       var rowValue = []; 
       var cellValue = []; 
       cellValue.push(amountElement.getText()); 
      } 
      } 
     } 
     } 
     else 
     { 
     cellValue.push("Not Found"); 
     } 
     rowValue.push(cellValue); 
     destinationRange.setValues(rowValue); 
    } 
    catch(exception) 
    { 

    } 
    } 
}; 



/** 
* Adds a custom menu to the active spreadsheet, containing a single menu item 
* for invoking the readRows() function specified above. 
* The onOpen() function, when defined, is automatically invoked whenever the 
* spreadsheet is opened. 
* For more information on using the Spreadsheet API, see 
* https://developers.google.com/apps-script/service_spreadsheet 
*/ 
function onOpen() { 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuItems = [ 
    {name: 'Get ZEstimate', functionName: 'getZillowEstimates'}, 
    ]; 
    spreadsheet.addMenu('Zestimates', menuItems) 
}; 
+0

Добро пожаловать в [so]. Пожалуйста, примите [тур] и проверьте [ask]. –

ответ

0

Сегодня она работает. Вчера скрипт забирал 6 минут, сегодня 1,6 секунды. Я предполагаю, что возникла проблема с Zillow или с API.