J'utilise importxml pour extraire des données de sites Web. Jusqu'à présent, cette partie fonctionne très bien. Cependant, je dois réunir le texte de ces cellules dans une cellule HTML que je peux télécharger sur mon site Web. J'ai joint la capture d'écran, je sais que la formule/codage est absolument faux! Mais c'est idéalement ce que je vais faire. Comment pourrais-je créer une meilleure formule/code pour cela? Je suis toujours super nouveau à ça!
J'utilise importxml pour obtenir les données dont j'ai besoin:
J'essaie de mettre toutes ces données dans une cellule qui doit être au format HTML:
Je vois où en est l'asker, et j'ai une réponse et quelques conseils:
Cela peut sembler une chose évidente à faire et cela n'a pas l'air si difficile, mais générer du HTML à l'aide d'un tableur (que ce soit Google Sheets, Excel ou tout autre progiciel de calcul) peut sembler simple, mais certaines choses peut et va devenir trop compliqué, ou vous allez très bientôt atteignez un point où vous devrez écrire une macro pour obtenir le résultat souhaité.
De plus, une fois que vous aurez plongé et commencé à écrire votre premier couple de macros, si votre feuille n’est pas déjà trop compliquée, , vous frapperez le Les limites du langage macro bientôt aussi .
Si vous utilisez rapidement un tableur lorsque vous l'utilisez pour générer du HTML, vous générerez rapidement que les balises structurées ne sont pas bien adaptées à la conception globale du paradigme du calcul en grille. Quelle est la raison pour laquelle nous avons Word et Excel et que
"In the beginning there was Visicalc, and Wordstar,
and each did what they did
and they were not a single program"
(From 'The book of Mozilla', I forget which verses).
Le traitement de texte est en soi un processus consistant à générer un document de balisage structuré. Il existe donc des packages logiciels plus adaptés à la tâche.
Mon conseil serait de garder la base de données dans la feuille de calcul ( une tâche pour laquelle elle convient bien ) et de vous épargner une profonde frustration et délais non respectés et investissez un peu de temps pour apprendre une langue correcte ; celui qui est est facile à apprendre et efficace pour modéliser HTML .
Python vient à l'esprit. L'alternative consiste à tirer parti des fonctionnalités des autres produits Google (puisque vous utilisez déjà Sheets), comme Google Sites que permet de créer facilement des sites Web et permet d’incorporer et de conduire certaines de ses pages à partir des données d’un tableur.
D'accord. Cependant, je suis dans cette voie et j'aurais apprécié que quelqu'un m'avertit que la folie attendait , j’ai donc pensé que cela aurait été irresponsable et injuste de demander au demandeur de ne pas l’avertir des périls à venir. (Je regarde ceux qui connaissent et n'ont pas élevé la voix.)
Cela étant dit, j'ai vu des gens abuser de feuilles de calcul d'une manière bien plus troublante . Alors:
Vous pouvez voir tous ces conseils en action dans cette feuille de calcul Google , afin que vous puissiez examiner les formules à votre guise et voir comment ces points simples vous aideront à éviter de créer un impossible à maintenir. monstruosité et gardez votre santé mentale pendant un moment encore.
Pour les plages nommées, , choisissez des noms qui ressemblent au balisage référencé afin que vos formules soient lisibles et maintenable , comme par exemple
=CONCATENATE(p_s1, A4, p_close) or
=CONCATENATE(span_s2, B7, span_close)
La complexité augmentera rapidement , gardez vos formules simples et construisez progressivement le balisage de l'intérieur , en utilisant des formules dans des cellules adjacentes . par exemple, dans la colonne C, entourez une valeur simple avec des balises <p> internes, dans la colonne D, entourez la valeur de C dans les balises <span> extérieures, dans la colonne E, entourez ce qui se trouve dans D avec des balises <div> extérieures, etc. sur. une étape à la fois , vous avez beaucoup de colonnes et quelques-unes
S'il vous plaît visitez le exemple de feuille car ce sera beaucoup plus clair qu'un killillion de screenshots ou la prose dense que j'ai tendance à écrire quand je suis tout énervé. J'espère que cela aide vraiment!
Donc, pour commencer, vous voulez doubler chacune des citations à l'intérieur de vos balises HTML pour qu'elles s'affichent correctement et ne pas annuler:
alors class="p1"
serait class=""p1""
puis pour la liste des éléments p1, vous pouvez utiliser regexreplace pour entourer vos données avec les balises au lieu de la concaténation (c'est juste un peu plus propre à mon avis)
Ainsi, l'expression régulière pour tout ce qui se trouve dans une seule cellule serait (.*)
, ce qui crée un groupe de capture auquel nous pourrons faire référence ultérieurement avec $1
.
Utiliser mes propres exemples de données pour démontrer: pour une seule ligne, ceci voudrait:
=REGEXREPLACE(A1,"(^.*$)","<p class=""p1"">$1</p>"))
qui imprime joliment:
Si vous souhaitez utiliser éventuellement join afin de ne pas avoir à copier le tout, vous pouvez d'abord utiliser arrayformula pour empiler les éléments p1 avec cette formule:
=arrayformula(if(istext(A2:A),REGEXREPLACE(A2:A,"(^.*$)","<p class=""p1"">$1</p>"),))
puis de tout regrouper dans une seule cellule:
=join(char(10),filter(B:B,istext(B:B)))
Dans les formules Google Sheets, le texte doit être placé entre guillemets. Si le texte comprend des guillemets, les guillemets intérieurs doivent être doublés. Exemples
Texte sans guillemets
Formule: ="<p>Hello world!</p>"
Résultat affiché: <p>Hello world!</p>
Texte avec guillemets intérieurs
Formule: ="<h1 class=""p1"">Hello world!</h1>"
Résultat affiché: <h1 class="p1">Hello world!</h1>
tilisation de références scalaires
Valeur A1: Hello world!
Tags simples
B1 formule: ="<p>"&A1&"</p>"
Valeur affichée B1: <p>Hello world!</p>
Tags avec attributs
Formule B2: ="<h1 class=""p1"">"&A1&"</h1>"
B2 résultat affiché: <h1 class="p1">Hello world!</h1>
tilisation des références de plage
Entrée
| A
----+---------------------
2 | Hello Mexico
3 | Hello USA
4 | Hello Canada
Formule
Formule C1: =ArrayFormula("<p>"&A2:A4&"</p>")
Résultat
C1: C3 valeurs affichées:
| C
----+---------------------
1 | <p>Hello Mexico</p>
2 | <p>Hello USA</p>
3 | <p>Hello Canada</p>