Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Google sheets - script uitbreiden van 1 variabele naar 3

Pagina: 1
Acties:

Acties:
  • +1Henk 'm!

  • pedorus
  • Registratie: januari 2008
  • Niet online
Marco_Dark schreef op zondag 7 juni 2020 @ 16:56:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var performanceSheet = spreadsheet.getSheetByName('Performance');
  var rngRET = performanceSheet.getRange(3,15,performanceSheet.getLastRow());
  var valuesRET = rngRET.getValues()
  var totalRET = 0
  for (var i = 0; i < valuesRET.length; i++) {
    if (parseFloat(valuesRET[i]) > -1000000) {
      totalRET = totalRET + parseFloat(valuesRET[i]);
    }
  }
  
  var localDateTime = new Date()
  var portfolioSheet = spreadsheet.getSheetByName('PortfolioTrend');
  portfolioSheet.appendRow([localDateTime, totalRET]);
}
Ik heb nogal wat gedelete en ik denk dat dit de originele code was. Hoe voeg je dan wat extra kolommen toe en doe je dezelfde handeling opnieuw? Je zou dat kunnen doen zoals je bezig was, maar dan met betere { en }, maar je zou ook een functie kunnen introduceren die dit voor je doet. Over het algemeen wil je bij programmeren niet zomaar regels kopiëren, maar wil je daar functies (of andere dingen) voor gebruiken.

Hoe ziet die code eruit met een functie? Nou bijvoorbeeld zoiets:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function onOpen() {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var performanceSheet = spreadsheet.getSheetByName('Performance');

    function calculateTotal(a, b) {
        var rng = performanceSheet.getRange(a, b, performanceSheet.getLastRow());
        var values = rng.getValues();
        var total = 0;
        for (var i = 0; i < values.length; i++) {
            if (parseFloat(values[i]) > -1000000) {
                total = total + parseFloat(values[i]);
            }
        }
        return total;
    }

    var totalRET = calculateTotal(3, 15);

    var localDateTime = new Date();
    var portfolioSheet = spreadsheet.getSheetByName('PortfolioTrend');
    portfolioSheet.appendRow([localDateTime, totalRET]);
}

Ik heb daarvoor een javascript-editor gebruikt die de formatting regelt, errors er uit haalt, en refactoring kan doen om het wat makkelijker te maken. En hoe je dan 2 extra variabelen erbij krijgt laat ik aan jou over..

Vitamine D tekorten in Nederland | Middelen tegen corona


Acties:
  • +1Henk 'm!

  • pedorus
  • Registratie: januari 2008
  • Niet online
Marco_Dark schreef op zondag 7 juni 2020 @ 23:06:
Ik heb gebrobeerd nietgelijk er van te maken maar dat werkte niet.
Dat komt waarschijnlijk omdat vergelijkingen met NaN altijd onwaar opleveren. Om daar op te checken kun je de isNaN functie gebruiken.

Voor de rest is het typisch dat getValues waarschijnlijk een 2-dimensionale array terug geeft. Vervolgens gaat het toevallig weer goed omdat parseFloat dat 'oplost' door het eerste element van een array te nemen.

Geen idee of je het nu hebt weten op te lossen door bijvoorbeeld mijn antwoord wat aan te passen, ik hoop het wel.

Vitamine D tekorten in Nederland | Middelen tegen corona

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True