Bitte sehen https://code.google.com/p/google-apps-script-issues/issues/detail?can=2&start=0&num=100&q=&colspec=Stars%20Opened%20ID%20Type%20Status%20Summary%20Component%20Owner&groupby=&sort=&id=3226
Dieses Problem nach wie vor noch ist gesetzt, ohne das aktuelle Datum zu lösenden fixiert werden.
Ich glaube, dass die Ursache dafür verantwortlich ist, dass das Google Apps-Skript nicht mit der OPTIONS-Methode umgehen kann, die von Safari verwendet wird, um nicht-standardmäßige Anfragen an andere Domänen "zu prüfen".
Die Arbeit, die ich verwende, ist eine Anfrage an meinen Server, um dann mit dem Google Apps-Skript zu interagieren. Nicht schön und langsam, aber ich muss sicherstellen, dass die Website funktioniert.
Hier ist der PHP-Code, den ich verwendet habe, um die Anfrage auf meinem Server zu machen, übergeben Sie das Makro, ID und Blatt als Get Params. Die PHP gibt dann die abgerufenen Daten von Google:
<?php
header('Access-Control-Allow-Origin: *');
$url = 'https://script.google.com/macros/s/';
$url .= $_GET['macro'];
$url .= '/exec?id=';
$url .= $_GET['id'];
$url .= '&sheet=';
$url .= $_GET['sheet'];
function get_data2($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$response = get_data2($url);
echo $response;
?>
jetzt Dies bedeutet, dass Safari eine Anfrage an die gleiche Domain macht und auch verfolgen wir die 403 Umleitung Notiz Google in unserem Weg mit CURLOPT_FOLLOWLOCATION freundlich setzt.
Update 7. Mai 2015
Ich habe bemerkt, dass, obwohl ich eine 405 method not allowed
Antwort vom Server empfängt, Daten tatsächlich durch das Google App Script erfolgreich empfangen werden. Zum Beispiel konnte ich die Parameter get und post ohne Probleme erhalten.
Um dies zu berücksichtigen, habe ich einen Schalter in der Fehler Catch aus dem AJAX Anruf hinzugefügt, da der Fehlercode, den ich tatsächlich erhalte, 0
... glücklich zu sehen, dass etwas funktioniert, aber ich würde nicht vertrauen es ist zu viel in der Produktion.
Ich habe ein Update unten gepostet –