2009-10-06 3 views
4

Comment puis-je enregistrer des données dans une feuille de calcul google non publique en PHP sans utiliser Zend Gdata lib? Je ne peux pas utiliser les bibliothèques Zend, comme cela est indiqué sur les didacticiels Google, car le serveur php sur lequel j'exécute le script est php v. 5.0.4. J'ai essayé de trouver une solution en utilisant cUrl, mais je ne peux pas omettre le problème avec l'authentification quand doc n'est pas public. Comment puis-je le faire? Si quelqu'un l'a essayé, partagez la solution.Comment enregistrer des données dans une feuille de calcul google non publique en utilisant PHP sans bibliothèque Zend Gdata?

Répondre

5

J'ai trouvé une solution en utilisant curl et en créant un formulaire pour la feuille de calcul de google. Pour la feuille de calcul préparée, vous devez créer un formulaire, sans options: Demander l'inscription pour voir ce formulaire et Recueillez automatiquement le nom d'utilisateur du répondant. Puis vérifiez, en utilisant f.e. Firebug, la forme uri de poste et les données post et l'utiliser pour script suivant:

#prepare post data 
$fields = array('backupCache' => '', 
      'entry.0.single'=>urlencode($data['name']), 
      'entry.1.single'=>urlencode($data['surname']), 
      'pageNumber'=>urlencode(0), 
      'submit'=>'Submit'); 
$fields_string = ''; 

foreach($fields as $key=>$value) { 
    $fields_string .= $key.'='.$value.'&'; 
} 

rtrim($fields_string,"& "); 
$fields_string = substr($fields_string, 0, strlen($fields_string)-1); 

$ch = curl_init(); 
#set curl_setopt for your preferences 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);  

curl_setopt($ch, CURLOPT_POST, count($fields)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 

#set proper form uri 
curl_setopt($ch, CURLOPT_URL, $formUri); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 

$res = curl_exec($ch); 
curl_close($ch); 

ne peut pas être la solution la plus parfaite, mais il fonctionne. :)

0

Vous pouvez accéder aux API GData à l'aide de requêtes HTTP ordinaires; une bibliothèque rend cela plus facile pour vous. Vous finissez simplement par réécrire les bits de la bibliothèque que vous voulez utiliser. Voir le protocol documentation.

2

est ici une classe php orientée objet pour envoyer des données à une feuille de calcul Google Docs - http://code.google.com/p/php-form-builder-class/source/browse/trunk/includes/class.spreadsheet.php?spec=svn384&r=384

cURL est utilisé au lieu de GData lib de Zend. Vous pouvez trouver un exemple de mise en œuvre ci-dessous. N'oubliez pas de remplacer les paramètres de test ("my_google_email", "my_google_password", etc.) par vos informations spécifiques.

$doc = new spreadsheet(); 
$doc->authenticate("my_google_email", "my_google_password"); 
$doc->setSpreadsheet("my_spreadsheet_title"); 
$doc->setWorksheet("my_worksheet_title"); 
$my_data = array("First Name" => "John", "Last Name" => "Doe"); 
$doc->add($my_data); 

Les clés du tableau associatif transmis à la méthode d'ajout doivent correspondre les en-têtes de colonnes des feuilles de calcul que vous utilisez pour recueillir les données.

+0

Son fonctionne comme un charme, mais comment obtenir des données de tableur ??????????????????? – Manwal

Questions connexes