Aide sur l'importhtml

Bonjour,

J'utilise google sheet pour mes actions boursières, j'utilise google finance mais aussi yahoo fiance via import, je n'arrive pas a prendre le première nombre, avez vous une idée comment faire?

Je vous laisse une image cela sera plus clair

Je souhaite avoir uniquement 5.92 sans le (2.97%)

Je vous remercie et vous souhaite une bonne journée

3

formule actuellement =SI(ESTVIDE(C3),"",INDEX(IMPORTHTML(CONCATENER("ici lien yahoo",C3),"table",2),6,2))

Ici lien Yahoo

Pour Yahoo finance, c'est simple, oublie IMPORTHTML car la page est construite par le navigateur lui-même sur ton poste et non le serveur. Un javascript récupère le json de la page pour le mettre en forme.

Ce json est heureusement présent sur la page elle-même et s'appelle root.App.main

Il faut donc extraire ce json de la page comme ceci

  var source = UrlFetchApp.fetch(url).getContentText()
  var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
  var data = JSON.parse(jsonString)

l'url est celle de yahoo

on peut ensuite extraite de data les données souhaitées

Prend une copie du fichier ... https://docs.google.com/spreadsheets/d/1sTA71PhpxI_QdGKXVAtb0Rc3cmvPLgzvXKXXTmiec7k/copy (version US car les séparateurs de décimales de yahoo sont des points). Repère où se trouvent les fonctions et les paramètres des fonctions dans la page pour adapter.

Pour avoir le dividendRate

function rate() {
  var url='https://finance.yahoo.com/quote/MMM'
  var source = UrlFetchApp.fetch(url).getContentText()
  var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
  var data = JSON.parse(jsonString)
  var dividendRate = data.context.dispatcher.stores.QuoteSummaryStore.summaryDetail.dividendRate.raw
  Logger.log(dividendRate)
}

Bonjour,

Merci de votre réponse,

Malheureusement je ne suis pas du tout du milieu donc je ne comprends pas tout , serait t-il possible de me faire la formule, si cela est possible ?

Je suis vraiment désoler

Je vous remercie

Pas de soucis, mais donne moi un lien vers une copie de ton projet simplifié pour être plus pertinent. https://www.sheets-pratique.com/fr/cours/partage

Fais Outils > Editeur de script

Remplace ce qui est proposé par

function dividRate(code) {
  var url='https://finance.yahoo.com/quote/' + code
  var source = UrlFetchApp.fetch(url).getContentText()
  var jsonString = source.match(/(?<=root.App.main = ).*(?=}}}})/g) + '}}}}'
  var data = JSON.parse(jsonString)
  var dividendRate = data.context.dispatcher.stores.QuoteSummaryStore.summaryDetail.dividendRate.raw
  return dividendRate
}

Enregistre

Exécute cette fonction ... cela te demandera les autorisations :

autoriser

Cela donnera une erreur mais le principal est d'avoir donné les autorisations

en L3 tu mets

=IF(ISBLANK(C3),"",dividRate(C3))

Désolé d'avoir fait un peu compliqué, mais sans fichier ce n'était pas facile à voir ...

dans ton cas de figure, modifie simplement ta fonction comme suit

=IF(ISBLANK(C3),"", REGEXEXTRACT(INDEX(IMPORTHTML(CONCATENATE("https://finance.yahoo.com/quote/",C3),"table",2),6,2),"[0-9.]+"))

Re bonjour, cela est exceptionnelle ça fonctionne pour mes actions américaines, pour les européens ça ne fonctionne pas mais ce n'est pas très grave

Je vous remercie infiniment

Quentin

Pour les actions européenne, reprends le script complet proposé plus haut avec la fonction personnalisée dividRate

Ensuite n'oublie pas de clore ce fil de discussion en cliquant sur

Re,

Je n'ai pas réussi pour les actions européens, mais se n'est pas très grave

Merci infiniment

Rechercher des sujets similaires à "aide importhtml"