2016-09-05 4 views
0

Ищет помощь по скрипту электронной таблицы google, который используется для очистки. Проблема, с которой я сталкиваюсь, заключается в том, что несколько раз она слишком долго выполняет эту функцию, чтобы поднять результат. Я хотел бы создать своего рода «переход к следующей ячейке», если он не вернет ничего в течение 5 секунд.Перейти к следующей ячейке, если операция слишком длительная. Скрипты Google

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,1).getValue(); 
     sheet.getRange(2,6).setValue(url); 
     var xpathResult = sheet.getRange(3,6).getValue();  
     var counter = x - 1; 
     sheet.getRange("C4").setValue(counter + "/" + Num); 
     sheet.getRange(x,2).setValue(xpathResult); 
    } 
} 

Пример вывода:

enter image description here

ответ

0

Вы можете добавить тайм-аут в начале Вашего цикла. Это запустит пропущенную обработку, если ничего не изменится через 5 секунд.

Я создал этот образец кода, который напоминает вашу проблему.

// Dictionary to keep track of the status of each cell 
var skipCells = {}; 

function skipCellTester() { 
    for (var x = 1; x <= 3; x++) { 
     // Schedule this index to be skipped in 5 seconds. 
     scheduleSkipCell(x, 5); 

     console.log("Processing cell " + x); 

     /* 
     Set the cell status to true if you don't want to skip it anymore. 
     Here I am saying that cell 2 should not be skipped. 
     */ 
     if (x == 2) 
      skipCells[x] = true; 
    } 
} 

function scheduleSkipCell(x, seconds) { 
    setTimeout(function() { 
     if (!skipCells[x]) 
      console.log("Skipping cell " + x); 
     else 
      console.log("Do not skip cell " + x); 
    }, seconds * 1000); 

} 

skipCellTester(); 

 Смежные вопросы

  • Нет связанных вопросов^_^