Partager via


Extraction de ressources à partir du web

Si vous avez besoin de gérer des ressources sur le web, utilisez les méthodes suivantes d’UrlFetchApp.

Requête GET simple

Utilisez fetch(url) si vous avez simplement besoin d’obtenir une ressource web.

    var response = UrlFetchApp.fetch('https://www.contoso.com');

La fetch(url) méthode retourne un objet HTTResponse , qui a les méthodes de lecture de la réponse. Utilisez la getContentText méthode pour lire une réponse de texte et getContent pour lire une réponse binaire.

Si le corps de la réponse contient un objet JSON, utilisez getContentText pour obtenir l’objet JSON. Pour accéder aux champs individuels de l’objet JSON, utilisez la JSON.parse() méthode pour analyser la réponse.

    var stock = JSON.parse(response.getContentText());
    Logger.log(`stock symbol: ${stock["symbol"]}`);
    Logger.log(`company: ${stock["companyName"]}`);
    Logger.log(`close price: ${stock["close"]}`);

Gestion des erreurs HTTP

Si la requête échoue (par exemple, avec une requête incorrecte 400), le service arrête le traitement de votre script et écrit un message d’erreur dans le journal. Le message inclut le code de status HTTP de la requête, mais pas le message d’erreur qui peut se trouver dans le corps de la réponse.

Si vous avez besoin d’obtenir le corps de la réponse, appelez la méthode à la fetch(url, params) place et définissez le paramètre muteHttpExceptions sur true. La définition de muteHttpExceptions sur true renvoie toujours le contrôle à votre script. Vous devez ensuite appeler la getResponseCode() méthode pour déterminer la réussite ou l’échec de la demande et agir en conséquence.

    var response = UrlFetchApp.fetch('https://contoso.com', { muteHttpExceptions: true });    

    if (200 == response.getResponseCode())
    {
        Logger.log('HTTP request succeeded');
    }
    else
    {
        Logger.log('HTTP request failed');
    }

Ajout, mise à jour ou suppression d’une ressource web

Si vous devez ajouter, mettre à jour ou supprimer une ressource web, utilisez la méthode fetch(url, params). Cette méthode vous permet de spécifier le verbe HTTP à utiliser, l’en-tête Content-Type, tous les autres en-têtes dont votre requête a besoin et la charge utile de la requête. Pour plus d’informations sur ces paramètres, consultez l’objet UrlFetchParams .

L’exemple suivant obtient une ressource qui nécessite un jeton d’accès OAuth. Étant donné que GET est le verbe HTTP par défaut de la méthode fetch, le seul paramètre que vous devez spécifier est le headers paramètre .

    var token = "<the oauth token goes here>";
    var response = UrlFetchApp.fetch('https://contoso.com', { headers: { Authorization: `Bearer ${token}` } });    
    var jsonObject = JSON.parse(response.getContentText());    

Cet exemple envoie une requête POST avec une charge utile JSON. Étant donné que la charge utile est un objet JSON, l’exemple définit le paramètre sur contentTypeapplication/json.

    var myData = {
        'id' : '123abc',
        'name' : 'leg',
        'color' : 'red'
    };

    var options = {
        'method' : 'post',
        'contentType' : 'application/json',
        'payload' : JSON.stringify(myData)
    };

    var response = UrlFetchApp.fetch('https://contoso.com', options);    
    var jsonObject = JSON.parse(response.getContentText());    

Utilisation d’UrlFetchApp pour obtenir un fichier de données ou un fichier CSV à partir de OneDrive.

Pour obtenir un fichier à partir de OneDrive (https://onedrive.live.com), utilisez Microsoft Graph. L’accès à un fichier OneDrive nécessite un jeton d’accès OAuth. Et l’obtention d’un jeton d’accès nécessite le consentement de l’utilisateur, sauf si vous avez un jeton d’actualisation. Toutefois, étant donné que Les scripts ne prennent pas en charge les composants de l’interface utilisateur, vous devez obtenir le consentement d’une autre façon. Si vous ne disposez pas déjà d’un autre moyen d’obtenir un jeton d’actualisation, voici un script PowerShell que vous pouvez exécuter pour obtenir le consentement et le jeton d’actualisation.

$clientId = "your application ID goes here"
 
Start-Process "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=$clientId&scope=files.read offline_access&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf"
 
$code = Read-Host "Please enter the code"
 
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientid&redirect_uri=https://login.live.com/oauth20_desktop.srf&code=$code&grant_type=authorization_code"
 
Write-Output "Refresh token: " ($response.Content | ConvertFrom-Json).refresh_token 

Avant de pouvoir exécuter le script PowerShell, vous devez suivre ces étapes pour obtenir un ID client.

  1. Accédez à https://apps.dev.microsoft.com et cliquez sur Ajouter une application.
  2. Entrez un nom d’application tel que Le client Scripts. (Ne case activée pas l’installation guidée.)
  3. Cliquez sur Créer et notez votre ID d’application (ID client).
  4. Cliquez sur Ajouter une plateforme , puis sur Application native.
  5. Sous Autorisations déléguées Microsoft Graph, cliquez sur Ajouter et sélectionnez Fichiers.Lire et offline_access.
  6. Cliquez sur Save (Enregistrer).

Ouvrez le Bloc-notes ou votre éditeur favori et copiez le script PowerShell dans l’éditeur. Définissez $clientID sur l’ID d’application que vous avez reçu lors de l’inscription de votre application.

$clientId = "abc123-4d9e-44f1-837d-a7244af50027"

Enregistrez le fichier et nommez-le GetTokens.ps1 (vous pouvez le nommer comme vous le souhaitez, mais l’extension doit être .ps1).

Ouvrez maintenant une fenêtre de console. Pour ouvrir une fenêtre de console sur Microsoft Windows, entrez la commande Exécuter Windows suivante (<bouton> Windows+r) :

cmd.exe

À l’invite de commandes, accédez au dossier dans lequel vous avez enregistré GetTokens.ps1. Ensuite, entrez la commande suivante.

powershell.exe -File .\GetTokens.ps1

Si vous obtenez une erreur de stratégie d’exécution, vous devez modifier votre stratégie d’exécution. Pour connaître les options de stratégie d’exécution, consultez À propos des stratégies d’exécution. Pour modifier la stratégie d’exécution d’une session, entrez la commande suivante :

powershell.exe -ExecutionPolicy Bypass -File .\GetTokens.ps1

Lorsque le script PowerShell s’exécute correctement, il démarre une session de navigateur dans laquelle vous entrez les informations d’identification de votre compte Microsoft (MSA) (les informations d’identification doivent avoir accès à vos fichiers OneDrive). Une fois le consentement donné, la barre d’adresses du navigateur contient le code d’octroi (voir ?code={copy this code}).

https://login.live.com/oauth20_desktop.srf?code=M7ab570e5-a1c0-32e5-a946-e4490c822954&lc=1033

Copiez le code d’octroi (M7ab570e5-a1c0-32e5-a946-e4490c822954) et entrez-le dans la fenêtre de console à l’invite. Le script PowerShell retourne ensuite un jeton d’actualisation. Utilisez le jeton d’actualisation dans votre script pour obtenir le jeton d’accès. Vous devez traiter le jeton d’actualisation comme vous le feriez avec un mot de passe . si quelqu’un en a la main, il a accès à vos données OneDrive.

Le jeton d’actualisation est de longue durée, mais il peut devenir non valide. Si vous recevez une erreur invalid_grant, votre jeton d’actualisation n’est plus valide et vous devrez réexécuter le script PowerShell pour obtenir le consentement et un nouveau jeton d’actualisation.

Exemple de téléchargement d’un fichier CSV

Après avoir obtenu le jeton d’actualisation, l’exemple suivant montre comment 1) utiliser le jeton d’actualisation pour obtenir un jeton d’accès et 2) appeler Microsoft Graph pour obtenir une URL de téléchargement que vous utilisez pour télécharger le fichier CSV. Remplacez {yourclientid} par l’ID d’application de votre application inscrite, puis remplacez {yourrefreshtoken} par votre jeton d’actualisation.

function main() {
    var clientId = "{yourclientid}";
    var refreshToken = "{yourrefreshtoken}";

    var options = {
        'method' : 'post',
        'contentType' : 'application/x-www-form-urlencoded',
        'payload' : `client_id=${clientId}&redirect_uri=https://login.live.com/oauth20_desktop.srf&refresh_token=${refreshToken}&grant_type=refresh_token`
    };
    
    // Use the refresh token to get the access token.

    var response = UrlFetchApp.fetch('https://login.microsoftonline.com/common/oauth2/v2.0/token', options);
 
    var tokens = JSON.parse(response.getContentText());

    // Get the contents of the CSV file from OneDrive passing the access token in the Authorization header. 
    // Replace the path and file name (/me/drive/root/children/bids.csv) with your path and file name.

    response = UrlFetchApp.fetch('https://graph.microsoft.com/v1.0/me/drive/root/children/bids.csv/content', { headers: { Authorization: `Bearer ${tokens['access_token']}` } });    
 
    // Read and parse the contents of the file. The parseCSV method is a placeholder for 
    // whichever method you provide to parse the file.

    var file = response.getContentText();
    var data = parseCSV(file);
}

Analyser le fichier CSV

Il n’existe aucun outil d’analyse CSV intégré. Vous devez donc écrire votre propre outil ou en trouver un en ligne. Par exemple, une recherche rapide en ligne a trouvé celui-ci sur Stack Overflow. Si vous en trouvez un en ligne, assurez-vous qu’il n’a pas de restrictions d’utilisation.

Accès aux services Google

Pour plus d’informations sur l’utilisation d’UrlFetchApp pour accéder aux services Google, consultez Appel de services Google.