Freigeben über


Abrufen von Ressourcen aus dem Web

Wenn Sie Ressourcen im Web verwalten müssen, verwenden Sie die folgenden Methoden von UrlFetchApp.

Einfache GET-Anforderung

Verwenden Sie fetch(url) , wenn Sie nur eine Webressource benötigen.

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

Die fetch(url) Methode gibt ein HTTResponse-Objekt zurück, das über die Methoden zum Lesen der Antwort verfügt. Verwenden Sie die getContentText -Methode zum Lesen einer Textantwort und getContent zum Lesen einer binären Antwort.

Wenn der Antworttext ein JSON-Objekt enthält, verwenden Sie getContentText , um das JSON-Objekt abzurufen. Um auf die einzelnen Felder im JSON-Objekt zuzugreifen, verwenden Sie die JSON.parse() -Methode, um die Antwort zu analysieren.

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

Behandeln von HTTP-Fehlern

Wenn bei der Anforderung ein Fehler auftritt (z. B. mit 400 Ungültige Anforderung), beendet der Dienst die Verarbeitung Ihres Skripts und schreibt eine Fehlermeldung in das Protokoll. Die Nachricht enthält den HTTP-status Code der Anforderung, aber nicht die Fehlermeldung, die sich möglicherweise im Text der Antwort befindet.

Wenn Sie den Antworttext abrufen müssen, rufen Sie stattdessen die fetch(url, params) -Methode auf, und legen Sie den Parameter muteHttpExceptions auf true fest. Wenn Sie muteHttpExceptions auf true festlegen, wird immer die Kontrolle an Ihr Skript zurückgegeben. Anschließend müssen Sie die getResponseCode() -Methode aufrufen, um den Erfolg oder Misserfolg der Anforderung zu bestimmen und entsprechend zu handeln.

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

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

Hinzufügen, Aktualisieren oder Löschen einer Webressource

Wenn Sie eine Webressource hinzufügen, aktualisieren oder löschen müssen, verwenden Sie die Fetch(url, params) -Methode. Mit dieser Methode können Sie das zu verwendende HTTP-Verb, den Content-Type-Header, alle anderen Header angeben, die Ihre Anforderung benötigt, und die Nutzlast der Anforderung. Ausführliche Informationen zu diesen Parametern finden Sie im UrlFetchParams-Objekt .

Im folgenden Beispiel wird eine Ressource abgerufen, die ein OAuth-Zugriffstoken erfordert. Da GET das HTTP-Standardverb der Fetch-Methode ist, müssen Sie nur den headers Parameter angeben.

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

In diesem Beispiel wird eine POST-Anforderung mit einer JSON-Nutzlast gesendet. Da die Nutzlast ein JSON-Objekt ist, legt das Beispiel den contentType Parameter auf application/json fest.

    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());    

Verwenden von UrlFetchApp zum Abrufen einer Datendatei oder CSV-Datei von OneDrive.

Verwenden Sie Microsoft Graph, um eine Datei von OneDrive (https://onedrive.live.com) abzurufen. Für den Zugriff auf eine OneDrive-Datei ist ein OAuth-Zugriffstoken erforderlich. Das Abrufen eines Zugriffstokens erfordert die Zustimmung des Benutzers, es sei denn, Sie verfügen über ein Aktualisierungstoken. Da Skripts jedoch keine Benutzeroberflächenkomponenten unterstützen, müssen Sie die Zustimmung auf andere Weise einholen. Wenn Sie noch keine andere Möglichkeit zum Abrufen eines Aktualisierungstokens haben, finden Sie hier ein PowerShell-Skript, das Sie ausführen können, um die Zustimmung und das Aktualisierungstoken zu erhalten.

$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 

Bevor Sie das PowerShell-Skript ausführen können, müssen Sie die folgenden Schritte ausführen, um eine Client-ID abzurufen.

  1. Wechseln Sie zu , https://apps.dev.microsoft.com und klicken Sie auf App hinzufügen.
  2. Geben Sie einen App-Namen ein, z. B. Skriptclient. (Aktivieren Sie die Option Geführte Einrichtung nicht.)
  3. Klicken Sie auf Erstellen , und notieren Sie sich Ihre Anwendungs-ID (Client-ID).
  4. Klicken Sie auf Plattform hinzufügen und dann auf Native Anwendung.
  5. Klicken Sie unter Delegierte Microsoft Graph-Berechtigungen auf Hinzufügen , und wählen Sie Dateien.Lesen und offline_access aus.
  6. Klicken Sie auf Speichern.

Öffnen Sie Editor oder Ihren bevorzugten Editor, und kopieren Sie das PowerShell-Skript in den Editor. Legen Sie auf die Anwendungs-ID fest $clientID , die Sie bei der Registrierung Ihrer App erhalten haben.

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

Speichern Sie die Datei, und benennen Sie sie GetTokens.ps1 (Sie können sie beliebig benennen, aber die Erweiterung muss .ps1 sein).

Öffnen Sie nun ein Konsolenfenster. Um ein Konsolenfenster unter Microsoft Windows zu öffnen, geben Sie den folgenden Windows Run-Befehl (<Windows-Schaltfläche>+r) ein:

cmd.exe

Navigieren Sie an der Eingabeaufforderung zu dem Ordner, in dem Sie GetTokens.ps1 gespeichert haben. Geben Sie dann den folgenden Befehl ein.

powershell.exe -File .\GetTokens.ps1

Wenn ein Ausführungsrichtlinienfehler auftritt, müssen Sie Ihre Ausführungsrichtlinie ändern. Informationen zu Ausführungsrichtlinienoptionen finden Sie unter Informationen zu Ausführungsrichtlinien. Um die Ausführungsrichtlinie für eine Sitzung zu ändern, geben Sie den folgenden Befehl ein:

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

Wenn das PowerShell-Skript erfolgreich ausgeführt wird, wird eine Browsersitzung gestartet, in der Sie Ihre Anmeldeinformationen für Ihr Microsoft-Konto (MSA) eingeben (die Anmeldeinformationen müssen Zugriff auf Ihre OneDrive-Dateien haben). Nach der Zustimmung enthält die Adressleiste des Browsers den Genehmigungscode (siehe ?code={copy this code}).

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

Kopieren Sie den Genehmigungscode (M7ab570e5-a1c0-32e5-a946-e4490c822954), und geben Sie ihn an der Eingabeaufforderung in das Konsolenfenster ein. Das PowerShell-Skript gibt dann ein Aktualisierungstoken zurück. Verwenden Sie das Aktualisierungstoken in Ihrem Skript, um das Zugriffstoken abzurufen. Sie sollten das Aktualisierungstoken wie ein Kennwort behandeln. Wenn jemand es in den Besitz bekommt, hat er Zugriff auf Ihre OneDrive-Daten.

Das Aktualisierungstoken ist langlebig, kann aber ungültig werden. Wenn Sie einen invalid_grant-Fehler erhalten, ist Ihr Aktualisierungstoken nicht mehr gültig, und Sie müssen das PowerShell-Skript erneut ausführen, um die Zustimmung und ein neues Aktualisierungstoken zu erhalten.

Beispiel zum Herunterladen einer CSV-Datei

Nach dem Abrufen des Aktualisierungstokens zeigt das folgende Beispiel, wie Sie 1) das Aktualisierungstoken verwenden, um ein Zugriffstoken abzurufen, und 2) Microsoft Graph aufrufen, um eine Download-URL abzurufen, die Sie zum Herunterladen der CSV-Datei verwenden. Ersetzen Sie {yourclientid} durch die Anwendungs-ID Ihrer registrierten App und {yourrefreshtoken} durch Ihr Aktualisierungstoken.

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);
}

Analysieren der CSV-Datei

Es gibt kein integriertes CSV-Analysetool, sodass Sie ein eigenes schreiben oder online suchen müssen. Bei einer Online-Schnellsuche wurde diese beispielsweise auf Stack Overflow gefunden. Wenn Sie eine online finden, stellen Sie sicher, dass es keine Nutzungseinschränkungen gibt.

Zugreifen auf Google-Dienste

Informationen zur Verwendung von UrlFetchApp für den Zugriff auf Google-Dienste finden Sie unter Aufrufen von Google-Diensten.