webentwicklung-frage-antwort-db.com.de

Wie füge ich mit Google Apps Script Formeln zu Google Sheets hinzu?

Wie füge ich eine Formel wie:

=SUM(A1:A17)

auf eine Reihe von Feldern mithilfe der Google Apps Script-API für Google Sheets?

31
Pablo Jomer

Dies geschieht mit dem setFormula für eine ausgewählte Zelle. Nachfolgend finden Sie ein Beispiel dafür.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
cell.setFormula("=SUM(B3:B4)");

Sie können auch setFormulaR1C1 verwenden, um R1C1-Notationsformeln zu erstellen. Beispiel unten.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
// This sets the formula to be the sum of the 3 rows above B5
cell.setFormulaR1C1("=SUM(R[-3]C[0]:R[-1]C[0])");

Um mehrere Formeln zu mehreren Feldern hinzuzufügen, verwenden Sie setFormulas . Beispiel unten

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

// This sets the formulas to be a row of sums, followed by a row of averages right below.
// The size of the two-dimensional array must match the size of the range.
var formulas = [
  ["=SUM(B2:B4)", "=SUM(C2:C4)", "=SUM(D2:D4)"],
  ["=AVERAGE(B2:B4)", "=AVERAGE(C2:C4)", "=AVERAGE(D2:D4)"]
];

var cell = sheet.getRange("B5:D6");
cell.setFormulas(formulas);
38
Pablo Jomer

Hier ist eine allgemeinere Antwort.

Angenommen, Sie möchten Spalte B mit einer Formel füllen, die dem Wert von Spalte A plus 1 entspricht. Die Formel in Zelle B1 lautet beispielsweise "= A1 + 1".

Nehmen wir an, dass die erste Zeile des Bereichs 1 und die letzte 20 ist.

// create an array the same size as the number of rows.
var data = [];
// populate the array with the formulas.
for (var i=0; i < 20; i++)
{
  // note that as usual, each element of the array must itself be an array 
  // that has as many elements as columns. (1, in this case.)
    data[i] = ['=A' + (i+1).toString() + ' + 1 ' ];
}
// set the column values.
sheet.getRange(1,2,20,1).setFormulas(data);

In diesem Beispiel müssen Variablen anstelle der hartcodierten 1 und 20 verwendet werden, damit dies für unterschiedliche Zeilenzahlen und Startzeilen funktioniert.

3
Elroy Flynn