2017-02-06 4 views
-1

Dieses Skript ruft die Daten aus dem Blatt ab und fügt sie in ein neues Blatt ein. Ich möchte, dass die zweite Funktion jedes Mal in die dritte Zeile eingefügt wird.Google App Script - Einfügen von Daten in die nächste Spalte

Ich möchte das Ergebnis sein -

Zeitstempel | Impressionen | CTR

function AggregateData() { 
Impressions(); 
CTR(); 
} 

function Impressions() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("G16:H16"); 
var values = source.getValues(); 
var sheet = ss.getSheetByName("Aggregate"); 
values[0][0] = new Date(); 
sheet.appendRow(values[0]); 
}; 

function CTR() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("F16:G16"); 
var values = source.getValues(); 
var sheet = ss.getSheetByName("Aggregate"); 
values[0][0] = new Date(); 
sheet.appendRow(values[0]); 
}; 

Dieser Code hängt die zweite Funktion in der zweiten Spalte unterhalb des Ergebnisses der ersten Funktion an.

+0

Auf der Suche nach einigen Abklärungen: 1) Mit der zweiten Funktion meinen Sie CTR()? 2) CTR() und Impressions() fügen zu verschiedenen Blättern hinzu, also wie kann die CTR unterhalb hinzufügen, was von Impressions hinzugefügt wurde? –

+0

Entschuldigung, ich habe den Code angepasst. Es sollte auf dem gleichen Blatt sein - Aggregat. Die Reihenfolge wäre Timestamp (Col A) Impressions (Spalte B) CTR (Spalte C). Ich nehme an, das Datum() müsste aus der CTR-Funktion entfernt werden, da es bereits von impression() gefüllt wird. Danke für die Hilfe. – user1314051

+0

Eine weitere Verwirrung Sache in Ihrer Frage ist zu Beginn Ihrer Frage, die Sie sagen "Ich möchte die zweite Funktion jedes Mal in die dritte Zeile einfügen". Aber aus dem obigen Kommentar, meinen Sie, sollten Sie sagen "in die dritte Spalte einfügen". Habe ich Recht oder verpasse ich etwas? Von Ihnen Code ich versichere Sie versuchen, Spalte F und Spalte H aus dem Metrik-Blatt in aggregate Blatt zu vertauschen –

Antwort

0

Dieser Code kopiert Ihre Daten in der von Ihnen gewünschten Reihenfolge auf ein neues Blatt. Allerdings habe ich es auf eine Funktion reduziert. Der Grund, den Code der neuen Daten in einer neuen Zeile setzt, ist diese Zeile:

Sheet.appendRow(data) 

setzt die Daten, die Sie auf eine neue Zeile liefern, die leer ist. Das ist auch der Grund, warum ich die beiden Funktionen in einem zusammengefasst habe.

function AggregateData() { 
Impressions(); 
} 

function Impressions() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("F16:H16"); 
var values = source.getValues(); 
var pasteValues = [] // create new array which will hold the data you need to be pasted into the aggregate Sheet 
pasteValues[0] = [] // Adding a second dimesion to the array 
var sheet = ss.getSheetByName("Aggregate"); 
// below 3 lines does the switch of data and adds the time stamp 
pasteValues[0][0] = new Date(); 
pasteValues[0][1] = values[0][2] //Copy the col h (impressions value) value into the new array 
pasteValues[0][2] = values[0][1] //Copy the col G (impressions value) value into the new array 
sheet.appendRow(pasteValues[0]); //Append the new array into the sheet 
}; 
+0

Vielen Dank. Wie würde ich danach eine weitere Spalte im selben Array hinzufügen? – user1314051

+0

um eine weitere Spalte hinzuzufügen fügen Sie einfach neue Daten in das Array pasteValues ​​ein, so wie pasteValue [0] [3] = "neue Col Daten hier" –

+0

Danke J. Das hat mich den ganzen Tag gestört. – user1314051

Verwandte Themen