Grande Quantité d'appels "IMPORTXML" ? solution(s) alternative(s) ?

d'ailleurs je n'ai que 8 correspondance sur les 10

image image
function link(){
  var url = 'https://realt.co/fr/place-de-marche/'
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = classeur.getSheetByName('link');
  var result = []
  var fetchedUrl = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")
    if (html.length) {
      var links = [...html.matchAll(/"(https:\/\/realt.co\/product\/[^"]+\/)"/g)].flat()
      Logger.log(links)
    }
  result.push(links)  
  }
feuille.getRange(1, 1, result[0].length).setValues(transpose(result))  
}

function transpose(a){
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

il me manque ces deux la ( encore un mystère )

<a href="https://realt.co/product/19268-eureka-st-detroit-mi-48234/"
<a href="https://realt.co/product/1389-bird-ave-birmingham-mi-48009/"

EDIT : j'ai trouvé avec les log.

image

il faut que j'intervienne ici mais comment ?

[...]

var fetchedUrl = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")

[...]

EDIT : j'ai trouvé avec les log.

image

il faut que j'intervienne ici mais comment ?

[...]

var fetchedUrl = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")

[...]

que nenni ... les log c'est une chose, et en effet tu peux être tronqué ici comme lorsque tu envoies le tout dans une cellule

mais la variable html reste entière dans le script

tu peux le voir en éditant le début et la fin de la variable avec

  Logger.log(html.substring(0,500))
  Logger.log(html.substring(html.length-500,html.length))

Bonjour,

que nenni ... les log c'est une chose, et en effet tu peux être tronqué ici comme lorsque tu envoies le tout dans une cellule

Oui je pensais avoir répondu a moi-même ! = ces 2 autres éléments sont disponible sur cette page lorsque je suis connecté sur le site avec mes ID.

et la je cherche comment obtenir celle en "previous properties" mais j'y arrive pas du tout

je perds parfois pied dans tes pérégrinations ! peux-tu donner l'url et me dire comment on accèderait "normalement" (pas via google sheet) aux "previous properties" ?

je perds parfois pied dans tes pérégrinations !

Je viens d'apprendre un nouveau mot c'est vrai que j'ai tendance a réfléchir a travers mes sujets. il faut que j'arrête c'est vrai que ça peux paraitre illisible..

peux-tu donner l'url et me dire comment on accèderait "normalement" aux "previous properties" ?

https://realt.co/marketplace/

image

cela se produit quand on appuie sur

      <div class="back-catalog-modal-open-container-2">
        <button class="back-catalog-modal-open">
          Previous Properties        </button>
      </div>

avec une fonction asynchrone

j'ai fait le tour des adresses url et notamment des json, mais je n'ai rien trouvé pour le moement !

la seule façon bestiale de le faire est de faire Ctrl+A, Ctrl+C revenir sur une page vierge et faire Ctrl+V

tu as tout en vrac et tu peux récupérer alors les url, c'est juste une manipulation manuelle assez simple

image

C'est ce qu'il me semblait, je n'avais rien trouvé non plus.
merci

Bonjour bonjour,

j'ai 2 choses qui me tracasse encore... ( et promis je vais pas tout déballer en même temps sinon on va rien comprendre )

je n'arrive pas a faire le lien et sortir quelque chose de propose sur une page Sheets pour liée ces 2 scripts.

Celui-ci pour lequel j'obtiens les liens

function link(){
  var url = 'https://realt.co/fr/place-de-marche/'
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = classeur.getSheetByName('link');
  var result = []
  var fetchedUrl = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")
    if (html.length) {
      var links = [...html.matchAll(/"(https:\/\/realt.co\/product\/[\s\S\w]+?)"/g)].flat()
      Logger.log(links)
    }
  result.push(links)  
  }
feuille.getRange(1, 1, result[0].length).setValues(transpose(result))  
}

function transpose(a){
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

et celui-ci pour lequel j'aimerai utiliser le script juste au dessus pour me servir de la fonction avec tout les liens trouvé.

function myFunctionHighlights(){
  var data = gatDataAsJsonHighlights('https://realt.co/product/16851-16881-greenfield-rd-detroit-mi-48235/')
  Logger.log ([data['assetAnnualReturn']])
}

function gatDataAsJsonHighlights(marketplaceLink) {
  var fetchedUrl = UrlFetchApp.fetch(marketplaceLink, { muteHttpExceptions: true });
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText().replace(/(\r\n|\n|\r|\t|  )/gm, "")
    if (html.length) {
      var json = {}
      var section = html.match(/(<h3 class="blue-title">Property Highlights<\/h3>(.*)<!-- End of Investor ID -->)/g)[0]
      var sousSections = section.match(/<li class[\s\S\w]+?<\/li>/g)
      sousSections.forEach(function(elem){
        var classe = elem.match(/class="([^"]+)"/)[1]
        var donnee = elem.match(/<span class="data">([^<]+)</)[1]
        json[classe] = donnee
      })
      return (json)
    }
  }
}

le rendu à titre d'exemple : (même si les doublons des liens ne me conviennent pas, j'y reviendrais après.. chaque chose en son temps…)

image

bonne journée ! et merci !

Rechercher des sujets similaires à "grande quantite appels importxml solution alternative"