Frage
Wie kann ich mehrere Seiten mit Ergebnissen automatisch abrufen?
Antwort
Manchmal empfiehlt es sich, mehrere Seiten mit Benutzerergebnissen in einer JSON-Datei abzurufen. Ich habe dafür ein PHP-Skript erstellt, das unten angefügt ist.
<?php
$resource = ''; // put the name of the endpoint here, for example organizations, tickets
$start_page = 1; // first page you want to load
$end_page = 10; // last page you want to load (it could take a while if too big)
$subdomain = ''; // your zendesk subdomain
$userpwd = ''; // your zendesk username and password, or username/token and api token. - {username}/token:{token} or {username}:{password}
function makerequest($url, $userpwd) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$result = curl_exec($ch);
if (curl_errno($ch)) $result = curl_error($ch);
curl_close($ch);
return $result;
}
function getpages($resource, $start_page, $end_page, $userpwd, $subdomain){
$url = isset($url) ? $url : "https://$subdomain.zendesk.com/api/v2/$resource.json";
$i = $start_page;
$array = Array();
while (1) {
if ($i > $end_page) {
$file = fopen("results.json", "w") or exit("Unable to open file!");
fwrite($file, json_encode(array($resource => $array)));
fclose($file);
break;
}
$results = json_decode(makerequest($url, $userpwd));
$array = array_merge($array, $results->$resource);
$url = $results->next_page;
$i++;
}
}
getpages($resource, $start_page, $end_page, $userpwd, $subdomain);
?>
Laden Sie dieses Skript herunter oder kopieren Sie es und fügen Sie es in die Datei paginate.php ein. Setzen Sie die Variablen am Anfang, $resource, $start_page, $end_page, $subdomain, and $userpwd, wie in den Kommentaren des Skripts erklärt ein.
Navigieren Sie dann zum Ordner, in den Sie die Datei heruntergeladen haben, und führen Sie vom Terminal aus den Befehl php paginate.php aus, um die neue Datei mit den Ergebnissen in einer Datei namens results.json zu erstellen. Die Datei wird überschrieben und nicht angehängt.
Nachdem Sie die Ergebnisse erhalten haben, können Sie sie wie gewünscht bearbeiten. Anhand dieser Informationen können Sie herausfinden, welche Einträge im Array eindeutig oder doppelt waren. Geben Sie hierzu die Ergebnisse in der Datei results.json aus und führen Sie dann einen der beiden folgenden Befehle aus: Der erste zeigt die Anzahl eindeutiger Ergebnisse an, der zweite die tatsächlichen Werte:
cat results.json | jq '.' | grep '"id"' > sort > uniq -c > uniq.txt
cat results.json | jq '.' | grep '"id"' > sort > uniq > uniq.txt
Für die Verwendung dieser Befehle ist außerdem jq erforderlich, das Sie unter https://stedolan.github.io/jq/download/ herunterladen können.
Außerdem können diese Informationen nützlich sein, um die Daten für den Import in ein neues System zu exportieren.
Hinweis zur Übersetzung: Dieser Beitrag wurde mit automatischer Übersetzungssoftware übersetzt, um dem Leser ein grundlegendes Verständnis des Inhalts zu vermitteln. Trotz angemessener Bemühungen, eine akkurate Übersetzung bereitzustellen, kann Zendesk keine Garantie für die Genauigkeit übernehmen.
Sollten in Bezug auf die Genauigkeit der Informationen im übersetzten Beitrag Fragen auftreten, beziehen Sie sich bitte auf die englische Version des Beitrags, die als offizielle Version gilt.