Maak een Indexpagina van elke sheet in je google spreadsheet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Pluggie
  • Registratie: Februari 2024
  • Laatst online: 14-02-2024

Toelichting

Hallo allemaal,

werken jullie ook veel met google spreadsheets? En is het ook zo lastig, wanneer je meer dan 10 tabbladen in je spreadsheet hebt om steeds terug te klikken om bij die eerste sheet te komen?

Dan heb ik hier een leuk stukje code voor je waarmee je in een handomdraai een indexpagina maakt, waarop overzichtelijk alle sheets verschijnen met een link ernaar toe. De index pagina updaten doe je met een knop in een nieuw "custom menu" in je werkbalk bovenin.
Stappen:
  1. Maak een nieuwe sheet vooraan in je spreadsheet en noem deze 'Index'.
  2. Klik in je werkbalk op "Uitbreidingen" en kies: 'Apps script'
  3. in de linker zijbalk van de pagina die nu opent zie je een aantal zaken, waarvan er 1 'Code.gs' heet. Zorg dat je die geselecteerd hebt.
  4. Verwijder de standaard content die hier staat en plak de code die ik onderaan deze topic heb toegevoegd in het bestand. (mocht je al actieve code gebruiken, check dan eerst of er geen conflicterende namen worden gebruikt voor je mijn code er onderaan toevoegt).
  5. Sla het bestand op door op het diskette-icoon te klikken. (voor de jeugd onder ons... dit is een oud opslagmedium, van voor de cloud, de ssd en de harde schijf.)
  6. Klik vervolgens op 'Uitvoeren' om het script te koppelen aan je spreadsheet. Het kan zijn dat je nu meldingen krijgt om het script te vertrouwen. Indien je dit niet wilt houdt het nu op, maar wanneer je toestemt, zul je hierna in je spreadsheet een nieuw menu in je werkbalk zien met 2 opties: 'Go to Index' en 'Update index'
  7. Klik op 'update index' en voila! je index pagina bevat nu alle links naar de overige sheets in je spreadsheet!
Alternatieve link naar indexpagina
Nu kan het zijn, dat je de optie 'go to Index' niet erg mooi/handig vindt. Een alternatief hiervoor is om een bereik te definiëren naar de index pagina.

Zorg eerst, dat je op de index pagina bent. In de hoek linksboven je sheet staat een vakje waarin de actieve cel wordt weergegeven. Dit vak bevat ook een dropdownmenu met de optie 'Benoemde bereiken beheren'.Afbeeldingslocatie: https://tweakers.net/i/L8nBwVdd3b63uX5G6g1tsv2QZBE=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/JsvhwF9nclFv70bwT1lWe30D.jpg?f=user_large

Afbeeldingslocatie: https://tweakers.net/i/Ncbxcz2vA6QOlVqbGvRgc8kyvGs=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/D5K12XuprT6RmY7HZEjbcO0A.jpg?f=user_large


Er opent zich dan een menu in de rechter zijbalk met bovenaan de optie '+ Bereik toevoegen'. Klik hierop.
Geef het nieuwe bereik de naam 'Index' en klik daarna in het vak eronder om het bereik op te geven.

Zodra je daarin staat, klik je met je muis op een cel in je index sheet (bijvoorbeeld A1). Klik daarna op 'Klaar' en je snelkoppeling naar je index sheet is gereed.

Afbeeldingslocatie: https://tweakers.net/i/kKK02IFNWh1KU7G71jPXASd5LkE=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/rnjmuJCuYmrF7KMOQeQ6avcN.jpg?f=user_large

Je kunt nu vanaf elke sheet in je spreadsheet via dat dropdownmenu de optie 'Index' kiezen om zo snel terug te gaan naar je index pagina.
De code die je nodig hebt
Dan volgt hieronder de code die je nodig hebt.

Let erop, dat de code is gemaakt voor google spreadsheets met de taalinstelling Nederlands. Dat betekent onder meer, dat formules in deze google spreadsheet als separator een ; gebruiken in plaats van een normale komma. Mocht de code wel werken maar krijg je fouten met 'parseer errors', dan dien je regel 20 in de code aan te passen door de ; die daar in het rood staat, te vervangen door een ,

Veel succes en laat me weten wat je ervan vindt!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function createIndex() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var indexSheet = ss.getSheetByName("Index");
  if (!indexSheet) {
    indexSheet = ss.insertSheet("Index", 0);
  } else {
    indexSheet.clear();
  }

  var sheets = ss.getSheets();
  var rowCount = 1;
  var colCount = 1;

  sheets.forEach(function(sheet) {
    if (sheet.getName() !== "Index") {
      var sheetName = sheet.getName();
      var sheetId = sheet.getSheetId();
      var cell = indexSheet.getRange(rowCount, colCount);
      // Using semicolon as separator in the formula
      cell.setFormula('=HYPERLINK("#gid=' + sheetId + '"; "' + sheetName + '")');

      rowCount++;
      if (rowCount > 40) {
        rowCount = 1;
        colCount++;
      }
    }
  });

  // Auto-resize columns for better readability
  for (var i = 1; i <= colCount; i++) {
    indexSheet.autoResizeColumn(i);
  }
}

function goToIndex() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var indexSheet = ss.getSheetByName("Index");
  if (indexSheet) {
    ss.setActiveSheet(indexSheet);
  } else {
    SpreadsheetApp.getUi().alert("Index sheet not found.");
  }
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Index Menu')
      .addItem('Go to Index', 'goToIndex')
      .addItem('Update Index', 'createIndex')
      .addToUi();
}

Acties:
  • +1 Henk 'm!

  • DeTeraarist
  • Registratie: November 2000
  • Laatst online: 18:12

DeTeraarist

#Boots2Asses

Heb jij onderin niet een balkje met al je werkbladen?

Soms, als ik heel stil ben, kan ik de zon horen schijnen