Comment accéder aux données sur une autre feuille de calcul via AppsScript?

Bonjour à tous,

Serait-il possible d'accéder à un fichier sheet et de copier une plage de données ? je m'explique avec un exemple :

J'ai un fichier SheetA (fichier final) et un fichierB (fichier source), est ce que c'est possible avec un script d'accéder au fichierB via le fichierA et de copier ses données ?

Je pense à la méthode : ss = SpreadsheetApp.openById("IdFichierSource")

mais ça ne marche pas auriez vous une idée comment faire ?

merci d'avance pour votre aide

Bonjour,

C'est même possible sans script, avec une formule en utilisant

IMPORTRANGE

https://support.google.com/docs/answer/3093340?hl=fr

Bonjour,

Oui effectivement on peut faire cela, sauf que, lorsque j'utilise importrange dans une base de données volumineuse plus 1000000 lignes, il m'affiche l'erreur suivante "Résultat trop grand" (et cela à chaque fois je dépasse 30 000 lignes).

J'étais obligé d'imbriquer des importrange (avec des plages 15000lignes) dans une Array { } pour que cela marche, mais je te laisse imaginer la taille de la formule :)

C'est pourquoi j'ai pensé au script comme solution idéale, d'autant plus qu'on peut utiliser les Arrays qui sont plus rapide dans l'exécution.

D'accord, c'est une information que je n'avais pas. Je vais m'y pencher.

Je n'ai pas de très grosses bases de données pour tester, mais tu peux essayer ceci

function importer() {
  var source = SpreadsheetApp.openById("_______id du fichier_________")
  var data = source.getSheetByName('DB').getDataRange().getValues() // adapter le nom de la feuille
  var destination = SpreadsheetApp.getActiveSheet()
  destination.getRange(1, 1, data.length, data[0].length).setValues(data);
}

Oui le script fonctionne parfaitement merci beaucoup

Par contre, est ce que c'est possible de charger les données (les importés du fichier source) à chaque ouverture du fichier de destination ?

J'ai pensé à onOpen mais je ne sais pas comment l'intégrer à ton script !

Merci pour ton aide

Par contre, est ce que c'est possible de charger les données (les importés du fichier source) à chaque ouverture du fichier de destination ?

Tu peux directement mettre un déclencheur (trigger) sur la fonction importer() en cliquant sur l'horloge à gauche dans l'éditeur de script.

image

Bonsoir,

Je suis d'accord avec toi sur la possibilité d'utiliser simplement le Trigger. Sauf que l'inconvénient à mon avis est le fait que, tu peux pas échapper aux envois de notifications par mail (on peut réduire en mettant envoi par semaine, mais il me semble qu'il n 'y a pas un moyen d'arrêter l'envoi des notif de déclenchement ! )

d'autant plus, si on a plusieurs fichiers avec des déclencheurs (on peut bricoler une solution de mettre les notifications directement dans la corbeille, mais bon cela reste embêtant quand même)

Dans ce cas en effet, tu peux faire

function onOpen() {
  var source = SpreadsheetApp.openById("_______id du fichier_________")
  var data = source.getSheetByName('DB').getDataRange().getValues() // adapter le nom de la feuille
  var destination = SpreadsheetApp.getActiveSheet()
  destination.getRange(1, 1, data.length, data[0].length).setValues(data);
}

reste à tester .. et là en effet onOpen n'envoie pas de notification par mail sur le déroulé.

Rechercher des sujets similaires à "comment acceder donnees feuille calcul via appsscript"