function addnumber(x,y){
return x+y;}
Deze functie komt ook in de lijst van uit te voeren functies in de script editor
niet apart te runnen, maar wel te gebruiken in anders functies binnen je script
var addnumber = function(x,y){
return x + y
}
Deze functie is nog steeds bruikbaar in een andere functie
function anotherfunction(){
var z = addnumber(55,33)
}
Als je in je functie een “vergeten” paramater wil opvangen, kan je dit met
function sqrnumber(x) {
if (x === undifined) {
return 0;
} else {
return x * x;
}
}
Video voor de notatie en uitleg: Get a List of All Worksheets in Google Sheets, Apps Script - Part 3
Om een formule te schrijven is er een methode setFormula, nadien kan je deze cell gebruiken om hiermee de ganse kolom te vullen met copyTo
Data validation laat ons toe om dropdown selectie lijsten te maken.
Google Sheets - Dependent Dropdown List for Entire Column - Apps Scipt, Match Alternative - Part 2
De functie om in een willekeurige cel een dropdown list te maken gebruikt the metho “newDataValidation()”, waar als onderliggende methode een range gebruikt waarin de dropdowns vermeld staan “requireValueInRange(range)” waarna je de dropdown moet bouwen dmv ”build()”.
Om deze formule te plaatsen in de sheet moeten we een positie kiezen.
In het voorbeeld is dit steeds een cel rechts van de eerste cel, dus kan je met offset werken.
Het toekennen van de DataValidation formule doe je met setDataValidation(formule)
Je kan ook vanuit apps script formules in de sheet plaatsen voor allerhande berekeningen etc
In de code zie je de mogelijkheid om via setValue in een cel een formule te plaatsen.
Vermits de schrijfwijze van een formule verschillend is, afhankelijk van de landscode, doordat de list separator verschilt, moet je de formule in het juiste formaat toevoegen.
Om te achterhalen in welke landcode een sheet staat, kan je de method getSpreadsheetLocale() gebruiken
Opmerking:
Google werkt standaard in de US versie, dit houd in dat de list separator een "comma" is. Omdat een sheet met formules die in een andere taal wordt gemaakt, toch zou kunnen werken in de US, voorziet Google een automatische vertaling van "niet-comma" formules.
Dit wil dus zeggen, dat als je, zoals in ons geval de "punt-comma" gebruikt in Belgie, Google dit intern vertaalt naar formules met een comma, ook al staat je Sheet in US.
Hierdoor zou je altijd de "punt-comma" versie kunnen gebruiken in Europa, waardoor het automatisch wordt aangepast
// create sheet to calc % score
if (ss.getSheetByName("calc") == null) { ss.insertSheet("calc") }
// Insert formulas
let Sheet0 = sheets[0].getSheetName()
// formula copy Score column from form respose sheet(sheet0)
let formula0 = `={'${Sheet0}'!C1:C}`
// Put array formula in sheet, Different formula for NL or US versions, based on country codes
var Locale = ss.getSpreadsheetLocale()
let formula1 = ''
switch (Locale) {
case "en_GB":
case "en_US":
formula1 = `=ARRAYFORMULA(IF(A2:A="","",INT(left(A2:A,len(A2:A)-find("/",A2:A)-1)/right(A2:A,len(A2:A)-find("/",A2:A)-1)*100)))`
break;
default: //Default list ";" translation by google to ","
case "nl_NL":
formula1 = `=ARRAYFORMULA(IF(A2:A="";"";INT(left(A2:A;len(A2:A)-find("/";A2:A)-1)/right(A2:A;len(A2:A)-find("/";A2:A)-1)*100)))`
}
// set formulas in new sheet
ss.getSheetByName("calc").getRange(1, 1).setValue(formula0)
ss.getSheetByName("calc").getRange(1, 2).setValue("Score")
ss.getSheetByName("calc").getRange(2, 2).setValue(formula1)
SpreadsheetApp.flush()