3 votes

Récupérer les valeurs de plusieurs feuilles Google sheets

J'essaie de trouver l'ID d'un employé à partir des présences qui s'étendent sur plusieurs feuilles et d'extraire l'horodatage dans une seule feuille.

La feuille Google contient plusieurs feuilles. Il y a des feuilles individuelles pour chaque jour de travail : Daily sheets

Chaque feuille de présence comporte deux colonnes. Pour connaître toutes les heures de connexion de l'employé, je veux extraire toutes les occurrences de l'ID de l'employé de toutes les feuilles et les transférer avec leur horodatage dans la feuille de consolidation : Consolidation sheet .

J'ai fait une chose similaire dans Excel et je suppose que cela peut être fait dans Google Sheet en utilisant le script de Google Apps.

Il serait utile que quelqu'un puisse me guider vers une fonction intégrée ou personnalisée dans google sheets.

1voto

Joshua Dawson Points 479

Je vous aiderai en vous proposant un plan de base, des conseils et des ressources, mais ne vous attendez pas à ce que je rédige l'ensemble du texte.


Étape 1 - Créer une option de menu personnalisée

Vous voudrez pouvoir accéder à votre script à partir de la feuille de calcul. Vous pouvez accomplir cela en créant une option de menu personnalisée. Voici une article de google sur les menus personnalisés .

Bien que google utilise le simple déclencheur onOpen J'ai trouvé déclencheurs installables pour être plus fiable.

Étape 2 - Obtenir la contribution de l'utilisateur

Ce serait bien d'être invité à entrer l'identifiant de l'employé et que le script fasse son travail. Voici un exemple article de google sur les dialogues et les sidebars qui traite de la manière d'obtenir une entrée utilisateur pour un script.

Étape 3 - Lire et écrire des données à partir du tableur

Vous pouvez accéder aux données de spreadsheeet avec la fonction SpreadsheetApp . Lorsque vous appelez votre script à partir d'un menu personnalisé, vous pouvez utiliser SpreadsheetApp.getActiveSpreadsheet Cependant, si vous voulez tester votre code dans l'éditeur script, il n'y a pas de "feuille de calcul active". SpreadsheetApp.openById à la place.

En ayant accès à la feuille de calcul, vous pouvez appeler :

spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).getValues();
spreadsheet.getSheetByName("name").getRange(1, 1, 2, 2).setValues([[1, 2], [3, 4]]);

Notez que getValues et setValues travailler avec des tableaux à deux dimensions

AVERTISSEMENT - Comme d'habitude, les E/S prennent beaucoup de temps de traitement, donc évitez d'appeler superflument getRange().XetValues ce article de google sur les meilleures pratiques d'appscript est plus détaillée. Par ailleurs, si vous avez BEAUCOUP de feuilles de présence, vous pourriez envisager de les condenser en une seule.

Étape 4 - Obtenez les feuilles appropriées

Vous aurez besoin d'un moyen de distinguer les feuilles de la feuille de calcul des feuilles de présence :

function isAttendanceSheet(sheet) {
  return /Magical regex/.test(sheet.getName);
}

var sheets = spreadsheet.getSheets().filter(isAttendanceSheet);

Trouvez l'expression magique qui vous convient, et cela les filtrera.


J'espère que cela vous aidera et bonne chance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X