Google Sheets ИМПОРТ XML getRange и setRange неверные "значения" - PullRequest
0 голосов
/ 24 января 2020

Я пользуюсь таблицей Google и импортирую XML, чтобы получить информацию о ценах на жилье от Zillow. Ячейка имеет следующую формулу:

=VALUE(IMPORTXML(FirstQuotedTextStringInFormula("F4"),"//div[contains(@class, 'zestimate primary-quote')]/div/text()[3]"))

Вы видите, что FirstQuotedStringInFormula позволяет мне сохранять URL-адрес в другой ячейке.

Я использую скрипт приложения, чтобы захватить эти данные для отслеживания истории по цене.

function recordHistory() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("History");
  var source = sheet.getRange("B2:AC2");
  var values = source.getValues();
  sheet.insertRowBefore(3);
  sheet.getRange(3, 2, 1, 28).setValues([values[0]]);
};

Это прекрасно работает для всех значений, которые я извлекаю. Не работают только те, которые извлекают значения из ячеек с ИМПОРТОМ XML формула Когда я пытаюсь вставить эти данные в лист истории, ссылка на него "= Assets! B6" работает нормально. Значение отображается как ожидалось. Но когда я запускаю скрипт выше, значение отображается в следующей строке как "#VALUE!" Просто это отображается в ячейке как стандартный текст. Любая идея, где это ломается?

РЕДАКТИРОВАТЬ: я пытался повторить проблему в образце электронной таблицы, и я не могу получить всплывающую проблему, используя общую ссылку c (чтобы избежать использования личных данных) .

На листе я установил Sheet2! B2 со следующим:

=VALUE(IMPORTXML("https://homedepot.com/p/206651614", "//span[@id='ajaxPrice']/@content"))

Это работает нормально. Если вы посмотрите на вкладку «История», я могу использовать новое меню («Управление») для моментального снимка значений, а значения в строке 2 помещаются в строку 3. Это работает нормально. Если я заменим вышеупомянутое на:

=VALUE(IMPORTXML(FirstQuotedTextStringInFormula("F4"),"//div[contains(@class, 'zestimate primary-quote')]/div/text()[3]"))

Тогда, когда я go сделаю снимок значения на вкладке истории, он поставит #VALUE! в клетке вместо. Я также попытался заменить свой «FirstQuotedTextStringInFormula (« F4 ») фактическим URL-адресом, и он все еще делает то же самое. Что отличается между этими двумя, которые могут вызывать эту проблему?

1 Ответ

0 голосов
/ 27 января 2020

Я наконец решил проблему. Я не знаю, почему или как это решает проблему, но это может быть просто излишней сложностью. Я заменил исходный вызов IMPORT XML вызовом IMPORT XML, который извлекается из Zillow API. Я использовал это в качестве примера, и теперь автоматизация работает отлично.

https://www.reddit.com/r/sheets/comments/93hjxx/find_real_estate_value_zillow_zestimate_or/

...