Automatiser l'importation de données à partir d'une url

Bonjour,

Dans un google sheet, je souhaite importer un même csv chaque jour. Pour ce faire j'utilise la formule IMPORTDATA() et pour automatiser la mise à jour je vais dans extension -> app script -> éditeur -> code.gs:

function importCSVFromURL(url, sep) {
  var csvData = '=IMPORTDATA("' + url + '"; "' + sep + '")';
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue(csvData);
}

url = "..."
sep = ";"
importCSVFromURL(url, sep)

Puis dans l'onglet déclencheur , je mets en place le déclencheur.

Quand vient la mise à jour, j'obtiens dans la cellule "A1":

#VALEUR!

=IMPORTDATA("[object Object]"; "undefined")
Erreur
Valeur actuelle du délimiteur de la fonction IMPORTDATA : undefined. Cette valeur ne doit comporter qu'un seul caractère qui n'est ni une espace, ni un guillemet droit.

( Dans la cellule "A1", quand je mets directement la formule IMPORTDATA( "l'url" ; ";" ), j'obtiens bien les données )

Bonjour,

J'ignore pourquoi, mais le script se lance 2 fois, la première il fonctionne correctement, la 2nd il ne prend pas les données globale, mais uniquement locales et comme url et sep sont en global c'est indéfini, la solution est de mettre url et sep en local :

screenshot 2023 04 27 08 42 12

Si quelqu'un sait pourquoi le script se lance 2 fois, ce serait intéressant.

function importCSVFromURL() {
  var url = "www.testurl.fr"
  var sep = ";"
  var csvData = "=IMPORTDATA( "+ url +" ;  "+ sep +" )";
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue(csvData);
  Logger.log(csvData)
}

Bonjour,

J'ai bien mis les variables url et sep à l'intérieur de la fonction et j'ai supprimé la ligne de l'appel de la fonction importCSVFromURL(url, sep). J'ai aussi retiré les arguments de la fonction.

Tous à l'air de bien fonctionner. (Et je n'ai pas deux fois l'appel de la fonction qui s'effectue).

sans titre

Merci de votre aide.

Rechercher des sujets similaires à "automatiser importation donnees partir url"