2017-09-15 4 views
1

Ich habe diese Funktion in Google Tabellen. Momentan muss ich es auslösen, indem ich =loadOutposts() in ein Feld eintippe.Trigger Google Tabellen Funktion, um in Zelle zu schreiben

Ich habe einen Zeitauslöser für die Funktion eingerichtet, aber es schreibt keine Daten in mein Blatt. Weil ich in der Funktion, in die geschrieben werden soll, kein Blatt und kein Feld deklariert habe. Wie lasse ich die Funktion die Daten in Sheet2 A2 schreiben, ohne =loadOutposts() in dieses Feld eingeben zu müssen?

Thx!

Antwort

1

Versuchen Sie das folgende Script-Code:

function loadOutposts(){ 
    var outposts= new Array(); 
    var url = "https://api.eveonline.com/eve/ConquerableStationList.xml.aspx"; 
    var parameters = {method : "get", payload : ""}; 
    var xmlFeed = UrlFetchApp.fetch(url, parameters).getContentText(); 
    var xml = XmlService.parse(xmlFeed); 
    if(xml) { 
    var rows=xml.getRootElement().getChild("result").getChild("rowset").getChildren("row"); 
    for(var i = 0; i < rows.length; i++) { 
     outpost=[rows[i].getAttribute("stationID").getValue(), 
       rows[i].getAttribute("stationName").getValue(), 
       rows[i].getAttribute("stationTypeID").getValue(), 
       rows[i].getAttribute("solarSystemID").getValue(), 
       rows[i].getAttribute("corporationID").getValue(), 
       rows[i].getAttribute("corporationName").getValue() 
       ] 
     outposts.push(outpost); 
    } 
    } 
    //return outposts; 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2').getRange(2,1,outposts.length,outposts[0].length).setValues(outposts); 
}; 
+0

Thanks again;) funktioniert perfekt! – user6079228

+0

Wissen Sie vielleicht die Antwort zu den folgenden: Wenn ich die Funktion erneut ausführen, ersetzt es jetzt alle Daten in Sheet2 durch die neuen Daten, die es abruft. Aber kann es überprüfen, ob in den neuen Daten neue Zeilen vorhanden sind, basierend auf der Kombination stationationID & stationTypeID und fügen Sie die neuen Zeilen am Anfang von Blatt 2 hinzu? So ersetzt es nicht alle Daten nur neue Zeilen hinzufügen? – user6079228

0

Aufgrund der Funktionsweise von Google Tabellen müssen Sie direkt angeben, wann eine Funktion ausgeführt werden soll.

Google-Skripte werden serverseitig gehalten, und daher können Google-Tabellen keine Ereignisse wie Excel abhören, um Funktionen auszuführen.

Sie eine Taste auf Ihrem Blatt haben könnte, die eine Funktion aufruft, die in der ausgewählten Zelle geht, mit etwas wie folgt aus:

function buttonClick() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    // Returns the active cell 
    var cell = sheet.getActiveCell(); 
    cell.setValue(loadOutposts); 
} 

Auf diese Weise müssten Sie die Zelle, die Sie füllen möchten auszuwählen und Klicken Sie dann auf die Schaltfläche.

Siehe https://developers.google.com/apps-script/reference/spreadsheet/sheet#getactivecell für weitere Informationen

Verwandte Themen