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

En faite je viens de me rendre compte que lorsque le sous-menu n'est pas ouvert :

image

et lorsqu'il est ouvert:

image

mais c'est pas parce que j'ai vu ça que j'arrive a retrouver les liens facilement

Bonjour ! du coup j'ai pas du tout avancé..

Je ne sais pas comment m'y prendre pour utiliser les liens générés par la fonction "links" et m'en servir pour ensuite récupérer les données grâce a la fonction "getDataAsJson" !

ce teste ne fonctionne pas du tout ^^

function myFunction(){
  var data = getDataAsJson(links)
  Logger.log ([data.assetAnnualReturn, data.assetRentStartDate, data.assetRentPerToken, data.assetHasTenants, data.assetTokenPrice, data.assetSection8, data.assetSection8Pays])
}

function getDataAsJson(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
      })
      // Logger.log(JSON.stringify(json))
      return (json)
    }
  }
}

function links(){
  url = 'https://realt.co/marketplace/'
  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)
    }
  }
}

Car il faut juste que j'arrive a imbriquer les scripts précèdent pour tout sortir d'un coup en faite

et d'ailleurs je n'ai pas réussi a retrouver les liens de que ce qu'il y a dans " previous properties " .. grand mystère à mon niveau de connaissance

Edit : En faite mon objectif c'est de pouvoir récupérer tout les liens, et avec ces liens prendre toutes les infos du site assez simplement comme pour ça :

j'aime l'idée de mettre simplement les "en-tete" pour prendre le contenue c'est facilement assimilable pour moi.

je vais donc partir de plus haut pour intégrer plus de code source dans le .match au dessus

function myFunction(){
  var data = getDataAsJson(links)
  Logger.log ([data.assetAnnualReturn, data.assetRentStartDate, data.assetRentPerToken, data.assetHasTenants, data.assetTokenPrice, data.assetSection8, data.assetSection8Pays])
}

Bon.... avant de vouloir tout regrouper, avoir tout les liens etc.. je me concentre sur un autre volet a extraire..

Voici le code source :

<h3 class="blue-title">
    Property Financials  </h3>
  <div class="et_pb_row">
    <div class="et_pb_column">
      <div id="property-financials">

        <div class="property-yield-breakdown">
          <ul class="property-financials-list tabs-ul">

<!-- Gross Rent -->
<li class="line-item gross-rent-annual">
  <h4>
    Gross Rent / year         <span class="average-notice"></span>

      </h4>
  <span>$ 290,304.00</span>
</li>

<li class="line-item gross-rent">
  <h4>
    Gross Rent / month         <span class="average-notice"></span>
  </h4>
    <span>$ 24,192.00</span>
</li>

  <!-- Monthly Costs, w/ breakdown -->
  <li class="line-item monthly-costs has-fees">
    <h4>
      Monthly Costs      <button type="button" class="fees-toggle line-item"><i class="fas fa-caret-circle-down"></i></button>
    </h4>
    <span>- $ 8,449.20</span>

    <!-- <div class="fees-toggle-wrapper">
    <button class="fees-toggle" type="button">Fees</button>
  </div> -->

  <ul class="property-financials-fees">
    <li class="fee-item property-management">
      <h5>
        <span class="fee-heading">Property Management</span>
        <span class="fee-percent">(8.00%)</span>
      </h5>
      <span class="fee-value">- $ 1,935.36</span>
    </li>

    <li class="fee-item realt-platform">
      <h5>
        <span class="fee-heading">RealT Platform</span>
        <span class="fee-percent">(2.00%)</span>
      </h5>
      <span class="fee-value">- $ 483.84</span>
    </li>

          <li class="fee-item property-maintenance">
        <h5>
          <span class="fee-heading">Maintenance Expenses</span>
        </h5>
        <span class="fee-value">- $ 1,450.00</span>
      </li>

    <li class="fee-item property-taxes">
      <h5>
        <span class="fee-heading">Property Taxes</span>
      </h5>
      <span class="fee-value">- $ 2,850.00</span>
    </li>

    <li class="fee-item property-insurance">
      <h5>
        <span class="fee-heading">Insurance</span>
      </h5>
      <span class="fee-value">- $ 690.00</span>
    </li>

    <li class="fee-item property-utilities">
      <h5>
        <span class="fee-heading">Utilities</span>
      </h5>
      <span class="fee-value">
        - $ 1,040.00      </span>
    </li>

  </ul>
</li>

  <li class="line-item net-rent-monthly">
    <h4>Net Rent / month</h4>
    <span>
      $ 15,742.80    </span>
  </li>

  <li class="line-item net-rent-annual line-total">
    <h4>Net Rent / year</h4>
    <span>
      $ 188,913.60    </span>
  </li>

<li class="line-total asset-price no-border-top">
  <h4>
    Total Investment
          <button class="realt-tooltip-wrapper total-investment">
        <i class="fas fa-info-circle"></i>
        <div class="realt-tooltip">
          <strong>Total Investment</strong> is currently calculated as <strong>Number of Tokens x Token Price.</strong>  As a result of the two-decimal value of the Token Price, Total Investment will typically exhibit a discrepancy of a few cents to a few dollars.        </div>
      </button>
      <button type="button" class="asset-breakdown-toggle line-item">
        <i class="fas fa-caret-circle-down"></i>
      </button>
      </h4>

  <span>
    $ 1,881,450.00  </span>

      <ul class="asset-breakdown line-item">
              <li class="fee-item underlying-asset-price">
          <h5>Underlying Asset Price</h5>
          <span>$ 1,610,000.00</span>
        </li>

              <li class="fee-item op-expense-reimburse">
          <h5>Operating Expense Reimbursement (10%)</h5>
          <span>$ 188,153.00</span>
        </li>

              <li class="fee-item init-maintenance-reserve">
          <h5>Initial Maintenance Reserve</h5>
          <span>$ 48,384.00</span>
        </li>

              <li class="fee-item renovation-reserve">
          <h5>Initial Renovation Reserve</h5>
          <span>$ 35,000.00</span>
        </li>

    </ul>
  </li>

<li class="line-item cap-rate line-total no-border-top ">
      <h4>
      Expected Income      <button class="realt-tooltip-wrapper cap-rate">
        <i class="fas fa-info-circle"></i>
        <div class="realt-tooltip">
          <strong>Expected Income</strong> is calculated as <strong>Net Rent / Total Investment</strong>.  It does not include the potential return to token-holders from capital appreciation on the asset itself.        </div>
      </button>
    </h4>

        <span>10.04%</span>

    <p class="appreciation-not-included">Not including capital appreciation</p>

  </li>

          </ul>
        </div>

      </div> <!-- End #property-financials -->

Voici le script adapté :

function myFunctionFinancials(){
  var data = gatDataAsJsonFinancials('https://realt.co/product/16851-16881-greenfield-rd-detroit-mi-48235/')
  Logger.log ([data.gross-rent-annual])
}

function gatDataAsJsonFinancials(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 Financials<\/h3>(.*)<!-- End #property-financials -->)/g)[0]
      var sousSections = section.match(/<li class[\s\S\w]+?<\/li>/g)
      sousSections.forEach(function(elem){
        var classe = elem.match(/class="[^"]+-item ([^"]+)"/)[1]
        var donnee = elem.match(/<span>([^<]+)<\/span><\/li>/)[1]
        json[classe] = donnee
      })
      return (json)
    }
  }
}

et j'ignore pourquoi cela ne me récupère pas les infos. pourtant j'isole bien les éléments étape par étape comme précédemment

j'ai fait un doc avec les différents script et avancement.

l'idée final étant de tout retranscrire ensemble.

https://docs.google.com/spreadsheets/d/1puPQ8iQLc6LcdOueFcNlqzSNmho03wbg7g5NDZWydDc/edit?usp=sharing

ceci data.gross-rent-annual ne va pas du tout à cause des tirets ! mettre

Logger.log ([data['gross-rent-annual']])

ensuite, il y a des cas où il ne trouve pas la valeur ... pour le moment je décoince en mettant un peu de détail pour investiguer

function myFunctionFinancials(){
  var data = gatDataAsJsonFinancials('https://realt.co/product/16851-16881-greenfield-rd-detroit-mi-48235/')
  Logger.log ([data['gross-rent-annual']])
}

function gatDataAsJsonFinancials(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 Financials<\/h3>(.*)<!-- End #property-financials -->)/g)[0]
      var sousSections = section.match(/<li class[\s\S\w]+?<\/li>/g)
      sousSections.forEach(function(elem){
Logger.log("sous-section = " + elem)
Logger.log("classe = " + elem.match(/class="[^"]+-item ([^"]+)"/))
Logger.log("donnée = " + elem.match(/<span>([^<]+)<\/span><\/li>/))
        var classe = elem.match(/class="[^"]+-item ([^"]+)"/)[1]
        try {var donnee = elem.match(/<span>([^<]+)<\/span><\/li>/)[1]} catch(e){donnee=''}
        json[classe] = donnee
      })
      return (json)
    }
  }
}

comme cela tu peux voir là où c'est "null"

13:36:00    Infos    sous-section = <li class="line-item gross-rent-annual"><h4>Gross Rent / year <span class="average-notice"></span></h4><span>$ 290,304.00</span></li>
13:36:00    Infos    classe = class="line-item gross-rent-annual",gross-rent-annual
13:36:00    Infos    donnée = <span>$ 290,304.00</span></li>,$ 290,304.00

13:36:00    Infos    sous-section = <li class="line-item gross-rent"><h4>Gross Rent / month <span class="average-notice"></span></h4><span>$ 24,192.00</span></li>
13:36:00    Infos    classe = class="line-item gross-rent",gross-rent
13:36:00    Infos    donnée = <span>$ 24,192.00</span></li>,$ 24,192.00

13:36:00    Infos    sous-section = <li class="line-item monthly-costs has-fees"><h4>Monthly Costs<button type="button" class="fees-toggle line-item"><i class="fas fa-caret-circle-down"></i></button></h4><span>- $ 8,449.20</span><!-- <div class="fees-toggle-wrapper"><button class="fees-toggle" type="button">Fees</button></div> --><ul class="property-financials-fees"><li class="fee-item property-management"><h5><span class="fee-heading">Property Management</span><span class="fee-percent">(8.00%)</span></h5><span class="fee-value">- $ 1,935.36</span></li>
13:36:00    Infos    classe = class="line-item monthly-costs has-fees",monthly-costs has-fees
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="fee-item realt-platform"><h5><span class="fee-heading">RealT Platform</span><span class="fee-percent">(2.00%)</span></h5><span class="fee-value">- $ 483.84</span></li>
13:36:00    Infos    classe = class="fee-item realt-platform",realt-platform
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="fee-item property-maintenance"><h5><span class="fee-heading">Maintenance Expenses</span></h5><span class="fee-value">- $ 1,450.00</span></li>
13:36:00    Infos    classe = class="fee-item property-maintenance",property-maintenance
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="fee-item property-taxes"><h5><span class="fee-heading">Property Taxes</span></h5><span class="fee-value">- $ 2,850.00</span></li>
13:36:00    Infos    classe = class="fee-item property-taxes",property-taxes
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="fee-item property-insurance"><h5><span class="fee-heading">Insurance</span></h5><span class="fee-value">- $ 690.00</span></li>
13:36:00    Infos    classe = class="fee-item property-insurance",property-insurance
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="fee-item property-utilities"><h5><span class="fee-heading">Utilities</span></h5><span class="fee-value">- $ 1,040.00</span></li>
13:36:00    Infos    classe = class="fee-item property-utilities",property-utilities
13:36:00    Infos    donnée = null

13:36:00    Infos    sous-section = <li class="line-item net-rent-monthly"><h4>Net Rent / month</h4><span>$ 15,742.80</span></li>
13:36:00    Infos    classe = class="line-item net-rent-monthly",net-rent-monthly
13:36:00    Infos    donnée = <span>$ 15,742.80</span></li>,$ 15,742.80

13:36:00    Infos    sous-section = <li class="line-item net-rent-annual line-total"><h4>Net Rent / year</h4><span>$ 188,913.60</span></li>
13:36:00    Infos    classe = class="line-item net-rent-annual line-total",net-rent-annual line-total
13:36:00    Infos    donnée = <span>$ 188,913.60</span></li>,$ 188,913.60

13:36:00    Infos    sous-section = <li class="line-total asset-price no-border-top"><h4>Total Investment<button class="realt-tooltip-wrapper total-investment"><i class="fas fa-info-circle"></i><div class="realt-tooltip"><strong>Total Investment</strong> is currently calculated as <strong>Number of Tokens x Token Price.</strong>As a result of the two-decimal value of the Token Price, Total Investment will typically exhibit a discrepancy of a few cents to a few dollars.</div></button><button type="button" class="asset-breakdown-toggle line-item"><i class="fas fa-caret-circle-down"></i></button></h4><span>$ 1,881,450.00</span><ul class="asset-breakdown line-item"><li class="fee-item underlying-asset-price"><h5>Underlying Asset Price</h5><span>$ 1,610,000.00</span></li>
13:36:00    Infos    classe = class="fee-item underlying-asset-price",underlying-asset-price
13:36:00    Infos    donnée = <span>$ 1,610,000.00</span></li>,$ 1,610,000.00

13:36:00    Infos    sous-section = <li class="fee-item op-expense-reimburse"><h5>Operating Expense Reimbursement (10%)</h5><span>$ 188,153.00</span></li>
13:36:00    Infos    classe = class="fee-item op-expense-reimburse",op-expense-reimburse
13:36:00    Infos    donnée = <span>$ 188,153.00</span></li>,$ 188,153.00

13:36:00    Infos    sous-section = <li class="fee-item init-maintenance-reserve"><h5>Initial Maintenance Reserve</h5><span>$ 48,384.00</span></li>
13:36:00    Infos    classe = class="fee-item init-maintenance-reserve",init-maintenance-reserve
13:36:00    Infos    donnée = <span>$ 48,384.00</span></li>,$ 48,384.00

13:36:00    Infos    sous-section = <li class="fee-item renovation-reserve"><h5>Initial Renovation Reserve</h5><span>$ 35,000.00</span></li>
13:36:00    Infos    classe = class="fee-item renovation-reserve",renovation-reserve
13:36:00    Infos    donnée = <span>$ 35,000.00</span></li>,$ 35,000.00

13:36:00    Infos    sous-section = <li class="line-item cap-rate line-total no-border-top "><h4>Expected Income<button class="realt-tooltip-wrapper cap-rate"><i class="fas fa-info-circle"></i><div class="realt-tooltip"><strong>Expected Income</strong> is calculated as <strong>Net Rent / Total Investment</strong>.It does not include the potential return to token-holders from capital appreciation on the asset itself.</div></button></h4><span>10.04%</span><p class="appreciation-not-included">Not including capital appreciation</p></li>
13:36:00    Infos    classe = class="line-item cap-rate line-total no-border-top ",cap-rate line-total no-border-top 
13:36:00    Infos    donnée = null

13:36:00    Infos    [$ 290,304.00]

du coup, à voir si enlever le </li> n'est pas mieux!

function gatDataAsJsonFinancials(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 Financials<\/h3>(.*)<!-- End #property-financials -->)/g)[0]
      var sousSections = section.match(/<li class[\s\S\w]+?<\/li>/g)
      sousSections.forEach(function(elem){
Logger.log("sous-section = " + elem)
Logger.log("classe = " + elem.match(/class="[^"]+-item ([^"]+)"/))
Logger.log("donnée = " + elem.match(/<span>([^<]+)<\/span>/))
        var classe = elem.match(/class="[^"]+-item ([^"]+)"/)[1]
        try {var donnee = elem.match(/<span>([^<]+)<\/span>/)[1]} catch(e){donnee=''}
        json[classe] = donnee
      })
      return (json)
    }
  }
}

ceci data.gross-rent-annual ne va pas du tout à cause des tirets !

ahhhhhh et on peut gérer les espaces aussi en mettant entre crochets ?

punaise c'était si simple...

merci :) je retourne dessus tout à l'heure !

oui

en général, tu peux mettre sous crochets, là ce sera toujours bon

la notation avec un . est réservé à de alphanumérique pur qui ne commence pas par un chiffre !

function myFunctionFinancials(){
  var data = gatDataAsJsonFinancials('https://realt.co/product/16851-16881-greenfield-rd-detroit-mi-48235/')
  Logger.log ([data['init-maintenance-reserve']])
}

function gatDataAsJsonFinancials(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(/(<div id="property-financials">(.*)<li class="line-item cap-rate line-total no-border-top ">)/g)[0]
      var sousSections = section.match(/class[\s\S\w]+?<\/li>/gm)     
      sousSections.forEach(function(elem){
        var classe = elem.match(/class="[^"]+-item ([^"]+)"/)[1]
Logger.log(classe)      
        try{var donnee = elem.match(/<span class="fee-value">([^<]+)<\/span>/)[1];} catch(e){donnee = elem.match(/<span>([^<]+)<\/span>/)[1]} 
Logger.log(donnee)       
        json[classe] = donnee
      })
      return (json)
    }
  }
}
image

Seulement 2 que j'ai pas après vérification je vais chercher

image

pour le premier je comprend pas. il est identique aux autres..

image

et le deuxieme n'a pas exactement la meme structure... il n'a pas de "class" devant la donnée ( ça m'arrange pas.. )

image

Bonjour !

pour le premier je comprend pas. il est identique aux autres..

alors une partie de mon mystère... c'est surement a cause du flag..

var classe = elem.match(/class="[^"]+-item ([^"]+)"/g)[1]
image
var classe = elem.match(/class="[^"]+-item ([^"]+)"/)[1]
image

Sur le premier je trouve celui qui me manque. et sur le deuxième j'ai tout sauf celui qui me manque je continue mes recherches

Enlève le [1] dans les 2 cas pour voir la réponse sous forme de tableau

Enlève le [1] dans les 2 cas pour voir la réponse sous forme de tableau

Ok je me note ça.

je verrais pour retranscrire tout dans un tableau une fois que j'aurais réussi a prendre tout ce que je veux ( sans trop faire de script )

à l'heure actuel je suis pas si mal.

-il faut que je comprenne pourquoi cette donnée n'est pas récupérable comme les autres.
-il faut que je trouve les liens des "previous properties" mais la je sèche complément

et après je verrais etape par etape sinon je fais n'importe quoi et je ne comprend pas

-il faut que je comprenne pourquoi cette donnée n'est pas récupérable comme les autres

j'ai compris ! mais pas encore trouvé de contournement..

image

car si je m'arrête aux balises </span> j'ai beaucoup trop de problèmes.. et si je m'arrête aux balises </li> j'ai 2 données qui sont dans le même groupe

Assez improbable.

Ici j'obtiens 10 éléments sur 16 au total...

var classe = elem.match(/class="fee-[\w]+.([^"]+)">/)[1]
image

et avec ceci j'obtiens les 6 derniers éléments

var classe = elem.match(/class="line-[\w]+.([^"]+)">/)[1]
image

Donc en toute logique je devrais faire :

try{var classe = elem.match(/class="fee-[\w]+.([^"]+)">/)[1]}catch(e){classe = elem.match(/class="line-[\w]+.([^"]+)">/)[1]}

et bien il me manque quand même des éléments

image

si vous avez une explication.. moi je vois pas

mon explication est que tu deviens un vrai pro

l'autre explication est que try/catch fonctionne en cas d'erreur ... peut-être faut-il aussi tester si le contenu est vide ou null !

voire peut-être

try{var classe1 = elem.match(/class="fee-[\w]+.([^"]+)">/)[1]}
catch(e){classe1 = '??'}

try{var classe2 = elem.match(/class="line-[\w]+.([^"]+)">/)[1]}
catch(e){classe2 = '??'}

mon explication est que tu deviens un vrai pro

Ah ah j'ai une grande marge de progression encore..

a quoi servent les '??'

'??' juste pour signaler que là il y a en effet une erreur !

après tu peux mettre

classe = (classe1 == '??') ? classe2 : classe1
try{var classe1 = elem.match(/class="fee-[\w]+.([^"]+)">/)[1]}
catch(e){classe1 = '??'}

try{var classe2 = elem.match(/class="line-[\w]+.([^"]+)">/)[1]}
catch(e){classe2 = '??'}

le résultat est identique à ce que j'ai mis au dessus finalement c'est a dire a la place des cases blanches, des simples '?'

Donc oui je vais essayer de cumuler 2 classes séparément il faut juste que je trouve comment

Victoire !

function myFunctionFinancials(){
  var data = gatDataAsJsonFinancials('https://realt.co/product/16851-16881-greenfield-rd-detroit-mi-48235/')
  Logger.log ([data['class="fee-item renovation-reserve"']])
}

function gatDataAsJsonFinancials(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(/(<div id="property-financials">(.*)<li class="line-item cap-rate line-total no-border-top ">)/g)[0]         
      var sousSections = section.match(/class="fee-item.*?[0-9]+?<\/span>|class="line-item.*?[0-9]+?<\/span>|class="line-total.*?[0-9]+?<\/span>/g)
      sousSections.forEach(function(elem){
        var classe = elem.match(/class="fee-item.([^"]*?)"|class="line-item.([^"]*?)"|class="line-total.([^"]*?)"/g)
Logger.log(classe)      
        try{var donnee = elem.match(/<span class="fee-value">([^<]+)<\/span>/)[1];} catch(e){donnee = elem.match(/<span>([^<]+)<\/span>/)[1]} 
Logger.log(donnee)       
        json[classe] = donnee
      })
      return (json)
    }
  }
}

j'ai enfin tout mes éléments !

image

Bon...

On rentre dans le dur maintenant = Assemblage ! et la je vais avoir besoin d'aide car je vois pas comment m'y prendre.

function link(){
  url = 'https://realt.co/fr/place-de-marche/'
  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)
    }
  }
}

Ce script me génère des liens. je souhaiterai utiliser ces liens dans mes autres scripts directement ( pour ne pas devoir mettre un lien manuellement a chaque fois)

j'ai tout ça à assembler

image

Individuellement tout est ok.. l'heure de la fusion arrive

l'heure de la fusion arrive

ITER

La fusion est la réaction nucléaire qui alimente le Soleil et les étoiles.

C'est vrai que le résultat ne sera pas aussi fort j'en conviens !

Bonjour.

Bon alors… voici ma réflexion pour finaliser tout ça…

je part du script générant les liens du marketplace pour remplir ma colonne "A"

et je me sert de cette colonne "A" comme source pour les autres scripts, c'est juste ? ou j'ai un moyen de tout faire d'un coup ?

Au besoins je peux mettre ici les 6 scripts que j'ai individuellement.

bonne journée

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