2017-08-26 7 views
0

Ich versuche, ein Google Sheets-Anwendungsskript für eine IMPORTXML zu verwenden, die ich verwende.IMPORTXML in ein Google Apps-Skript mit automatischer Aktualisierung

A1 
=importxml("http://www.nfl.com/liveupdate/scorestrip/ss.xml","//@q") 

A2 
=importxml("http://www.nfl.com/liveupdate/scorestrip/ss.xml","//@h") 

Die Daten füllt von A1:B16

Nach einem Skript, das ich auf Web gefunden es Auto-Refresh zu haben:

function getData() { 
    var queryString = Math.random(); 

    var cellFunction1 = '=IMPORTXML("' + SpreadsheetApp.getActiveSheet().getRange('A1').getValue() + '?' + queryString + '","'+ SpreadsheetApp.getActiveSheet().getRange('A2').getValue() + '")'; 
    SpreadsheetApp.getActiveSheet().getRange('C1').setValue(cellFunction1); 

    var cellFunction2 = '=IMPORTXML("' + SpreadsheetApp.getActiveSheet().getRange('A4').getValue() + '?' + queryString + '","'+ SpreadsheetApp.getActiveSheet().getRange('A5').getValue() + '")'; 
    SpreadsheetApp.getActiveSheet().getRange('C2').setValue(cellFunction2); 
} 

Ich weiß nicht, was soll ich zu setzen/Ersetzen in diesem Code mit mir. Wenn jemand mir helfen könnte, zu erklären, was ich ändern soll, um es in meinem Blatt zum Laufen zu bringen/einige Beispiele zu geben, wie man das aussehen könnte, wäre eine große Hilfe.

Ich schätze

+0

Mögliches Duplikat von [IMPORTXML() Tabellenkalkulationsfunktion regelmäßig aktualisieren] (https://stackoverflow.com/questions/33872967/periodically-refresh-importxml-spreadsheet-function) –

Antwort

0

können Sie die Funktion aktualisieren, indem getFormula() dann setFormula() in einer time-driven trigger Funktion. Hier ist ein Code-Schnipsel aus einer verwandten SO post:

/** 
* Go through all sheets in a spreadsheet, identify and remove all spreadsheet 
* import functions, then replace them a while later. This causes a "refresh" 
* of the "import" functions. For periodic refresh of these formulas, set this 
* function up as a time-based trigger. 
* 
* Caution: Formula changes made to the spreadsheet by other scripts or users 
* during the refresh period COULD BE OVERWRITTEN. 
* 
* From: https://stackoverflow.com/a/33875957/1677912 
*/ 
function RefreshImports() { 
    var lock = LockService.getScriptLock(); 
    if (!lock.tryLock(5000)) return;    // Wait up to 5s for previous refresh to end. 
    // At this point, we are holding the lock. 

    var id = "YOUR-SHEET-ID"; 
    var ss = SpreadsheetApp.openById(id); 
    var sheets = ss.getSheets(); 

    for (var sheetNum=0; sheetNum<sheets.length; sheetNum++) { 
    var sheet = sheets[sheetNum]; 
    var dataRange = sheet.getDataRange(); 
    var formulas = dataRange.getFormulas(); 
    var tempFormulas = []; 
    for (var row=0; row<formulas.length; row++) { 
     for (col=0; col<formulas[0].length; col++) { 
     // Blank all formulas containing any "import" function 
     // See https://regex101.com/r/bE7fJ6/2 
     var re = /.*[^a-z0-9]import(?:xml|data|feed|html|range)\(.*/gi; 
     if (formulas[row][col].search(re) !== -1) { 
      tempFormulas.push({row:row+1, 
          col:col+1, 
          formula:formulas[row][col]}); 
      sheet.getRange(row+1, col+1).setFormula(""); 
     } 
     } 
    } 

    // After a pause, replace the import functions 
    Utilities.sleep(5000); 
    for (var i=0; i<tempFormulas.length; i++) { 
     var cell = tempFormulas[i]; 
     sheet.getRange(cell.row, cell.col).setFormula(cell.formula) 
    } 

    // Done refresh; release the lock. 
    lock.releaseLock(); 
    } 
} 

Hoffnung, das hilft.

Verwandte Themen