Erstellen von hash-array in Google Apps Script
Ich habe versucht, die Arbeit mit Trello und Google Apps-Skript in dieser Woche. Ich bin versucht, erstellen Sie ein array von hashes, die ich dann verwenden können, laden Sie das Arbeitsblatt. Google apps script ist nicht wie die typischen javascript-code erstellen von hashes. Ich habe mir die docs aber Sie nichts haben, wie hashes...Sie sagen:
var object = [];
var object1 = {};
object.push(object1);
Das klappt nicht, denn ich bin im Grunde versucht, etwas zu tun wie:
var hash={name: , label: };
var n= someNumber;
var l= someLabel
var hash.push(name: n, label: l);
Im wesentlichen, dass ist der code, den ich jetzt haben. Aber hier ist meine ganze Funktion:
function getData(){
var list={};
//get the list of delivered cards from Trello
var listRequest = authorizeToTrello(); //get authorization
var result = UrlFetchApp.fetch("https://trello.com/1/lists/4fea3a2c3a7038911ebff2d8/cards",
listRequest);//fetch list
var listOfCards = Utilities.jsonParse(result.getContentText());//Google app utility format json
//outer loop to iterate through list of Cards
for(var i=0; i < listOfCards.length; i++){
var cardId = listOfCards[i].id; //get the id of a single card
var l = listOfCards[i]["label"]; //get the label for the our structure
//get a json object for a single card within the list of cards iteration
var cardRequest = authorizeToTrello();
var getCard = UrlFetchApp.fetch("https://trello.com/1/cards/" + cardId + "/actions", cardRequest);
var singleCard = Utilities.jsonParse(getCard.getContentText());
//inner loop to iterate the single cards JSON objects
for(var j=0; j < singleCard.length; j++) {
if(singleCard[j].data != undefined && singleCard[j].data.listAfter != undefined)
{
var str = singleCard[j]["data"]["listAfter"]['name'];
if(str === "Delivered Q3 2012"){
var n = singleCard[j]['memberCreator']['fullName'];
}
}
}
//push the data to list
list.push(n,l);
}
return name, label; //return list for output
}
InformationsquelleAutor Psyllex | 2012-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen der Frage habe ich verstanden, dass der Autor muss wissen, wie zu erstellen ein assoziatives array in einem GAS. Wenn es richtig ist, dann ist hier ein paar links (hier und hier) und ein Beispiel-code ist unten.
Wenn der Autor wirklich braucht
dann gibt es ein paar Möglichkeiten, je nachdem, welcher hash-Algorithmus ist erforderlich.
Hier ist ein Beispiel, wie man erstellen Sie ein array von hashes Verwendung des MD5-hash.
P. S. Der Rücklauf der Autor code
return name, label; //return list for output
ist nicht korrekt - nur dielabel
Wert der Variablen zurückgegeben wird. Zurück ein paar Variablen als ein array ist notwendig zu schreibenreturn [name, label];
. Oder kann der Autor zurückgeben muss, dielist
variable und nichtname
undlabel
.InformationsquelleAutor megabyte1024
Ich weiß, dies ist eine alte post /Frage, aber ich möchte zu aktualisieren meine Antwort, da die original-Antwort (1. Antwort), ist irreführend. Ich selbst war auf der Suche für how to return assoziativen arrays zurück zu einer Zelle in dem Arbeitsblatt, aber ach.. "SIE können NICHT". Google-Tabelle MUSS wollen, dass ein numerisch indiziertes array oder ein Objekt. Ansonsten es gibt "#FEHLER".
Hier sind die Schritte zu replizieren, das Problem.
Lösung (eher ein workaround)
1: Übertragen Sie Ihre Objekte von Ihrem assoziativen array in ein numerisch indiziertes array mit Hilfe von for-each-Schleife.
Wenn Sie eine temp wie numerisch indiziertes array kann man wieder "temp" zurück in die aufrufende Zelle.
InformationsquelleAutor kkoolpatz
Zusammenfassung: Für
onEdit()
Zwecke Cache-Dienst, um zu definieren, assoziatives-array-Daten.Hier eine gemeinsame Gsheet demonstriert dieses komische Verhalten. Ich habe versucht, die folgende Lösung in programmgesteuert definieren ein assoziatives array, basierend auf Daten in einem Google-sheet.
Um dies auszuführen, führen Sie die
init()
Methode in deronOpen()
event-handler.Den logger Meldung wird bestätigt, dass
init()
lädt die Daten aus dem Arbeitsblatt.Nun, wenn ich versuche, einen Verweis auf diese assocArr Objekt in
onEdit()
es gibtundefined
für alle Schlüssel-Werte.Ich folgern, dass aus Gründen der Sicherheit, Google begrenzt die einfache trigger -
onEdit()
keine Globale variable Umfang, wie Sie stornierte die Nützlichkeit desevent.user
Eigenschaft.Nun statt, wenn ich einfach nur den Schlüssel-Wert-paar in den cache, funktioniert es! Hier ist der komplette code, der funktioniert mit dem Cache-Dienst.
Neugierig, die
onEdit()
hat diecache
variable in Ihrem scope.Hier ist wieder die gemeinsame Gsheet demonstriert dieses komische Verhalten.
InformationsquelleAutor Steven.AA