электронные таблицы Importxml оставляют только значения - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть лист с 1000+ функциями Importxml.Я заметил, что не могу импортировать> 50 на одном листе, поэтому я решил импортировать их 1 на 1 и быстро скопировать значения вставки, так что я смогу импортировать все 1000.

Я много чего пробовал,Вот последние два скрипта, которые я пробовал:

Скрипт 1:

function testfindfunc1() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var targetrow = 7;
  var targetcell = 1;
  var result = sheet.getRange(targetrow, targetcell);
  var formula1 = result.getFormula();
  var findVal = sheet.getRange(targetrow, targetcell).getValue();
  if( findVal == ('#N/A') || findVal == ('Loading...')) {
  var rangeToCopy = sheet.getRange(targetrow, targetcell);
  rangeToCopy.copyTo(sheet.getRange(targetrow, targetcell));
} else {
  result.setValue(findVal);
  }
   }

Проблемы со скриптом выше:

  1. Его копия только из 1 ячейки и только из определенной строки (мне нужно, например, A1: G1000).
  2. Когда есть «Загрузка ...» или «# Н / Д», еговернуть "#ERROR!"вместо пропуска / ожидания.

Скрипт 2:

function bulkXml() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var Num = Browser.inputBox("How many URLs do you need to scrape?");

for (x=2; x-2 < Num; x++)  {
    var url = sheet.getRange(x,15).getValue();
              sheet.getRange(2,2).setValue(url);
    var xpathResult = sheet.getRange('B2').getValue();
    var xpathResult1 = sheet.getRange('D2').getValue();
    var xpathResult2 = sheet.getRange('E2').getValue();
    var xpathResult3 = sheet.getRange('F2').getValue();
    var xpathResult4 = sheet.getRange('G2').getValue();
    var xpathResult5 = sheet.getRange('H2').getValue();     
    var counter = x - 1;
        sheet.getRange("B1").setValue(counter + "/" + Num);
        sheet.appendRow([xpathResult,xpathResult1,xpathResult2,xpathResult3,xpathResult4,xpathResult5]); 
if( url == ('#N/A') || url == ('Loading...')) {
    var rangeToCopy = sheet.getRange(counter);
        rangeToCopy.copyTo(sheet.getRange(counter));
    }
       }
          }

Проблемы со скриптом 2:

На самом деле его работа хороша вначале ~ 50, но после 50 она медленная и много раз печатает "#ERROR!"

Кроме того, если есть лучший метод (не электронные таблицы), я бы хотел знать :)

...