write sheets sheet google create php mysql xml csv google-spreadsheet

php - sheets - usando Google Docs como una base de datos?



php write to google spreadsheet (5)

Me gustaría crear una página PHP muy simple para un sitio, que muestre un calendario / calendario como datos, donde cada ranura sería gratuita o tendría alguna cita.

Debido a que todos los datos son en realidad solo una tabla, algo así como {month, day, hour, talk_name, talk_description}, pensé por qué no utilizar una hoja de cálculo de Google Docs como base de datos. OK, la razón principal es que solo estoy leyendo libros sobre cómo usar MySQL en PHP, así que definitivamente no estoy al mismo nivel para:

  • crear una interfaz de administración agradable para administrar los eventos
  • hacer que todo sea seguro (me refiero a toda mi idea sobre la seguridad es utilizar .htaccess para una carpeta de administrador y hacer que el sitio sea de solo lectura).

Por otro lado, todos podrían usar Google Spreadsheets para editar la tabla, de esta forma se resolverían tanto los aspectos de seguridad como los de la UI.

Mi pregunta es ¿cómo me recomendarías hacer eso? Google Docs puede publicar en formatos XML y CSV. ¿Puedo usar fgetcsv para obtener los datos? ¿Puede darme algunos ejemplos simples de cómo analizar el csv, y si sería eficiente (vale, será menos de 50 visitas al día), si hiciera algo como esto (lo siento por la sintaxis abstracta)?

$source_csv = fgetcsv(...); get_talk_name(x,y,z) { for all rows in $source_csv { if (month == x && day == y && hour == z) return talk_name } } get_talk_desc(x,y,z) { for all rows in $source_csv { if (month == x && day == y && hour == z) return talk_name } }


Entonces, aunque podría no ser sabio o escalable, sí, puedes hacerlo. Prueba este código:

<?php $url = "https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AupgXsRU8E9UdC1DY0toUUJLV0M0THM4cGJTSkNSUnc&output=csv"; $row=0; if (($handle = fopen($url, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num fields in line $row: <br /></p>/n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />/n"; } } fclose($handle); }

Básicamente, publique la hoja de cálculo como pública, cambie la salida a csv (del HTML predeterminado) editando manualmente la URL (es decir, output=csv ), recójala y luego itere sobre ella línea por línea usando fgetcsv .

Si la hoja de cálculo se ve así:

Esto generará lo siguiente para la csv en cuestión:

array(2) { [0]=> string(4) "Name" [1]=> string(5) "Value" } array(2) { [0]=> string(3) "Foo" [1]=> string(5) "13123" } array(2) { [0]=> string(3) "Bar" [1]=> string(3) "331" }



Podrías probar esto solo por diversión. Pero si solo necesitas un calendario comunal, usa algo como Google Calendar. La API de Google Calendar le permite actualizar su calendario desde un programa. Y puede insertar un calendario en su sitio web usando Google Embeddable Calendar Helper.

No es tan divertido como programarlo desde cero ... ;-)


Consulte esta página para obtener un enfoque bastante directo para usar una hoja de cálculo de GDocs como una base de datos CRUD. El uso sigue este patrón, pero debes descargar primero una clase Zend y un archivo GDocs / PHP de github ...

<?php // Zend library include path set_include_path(get_include_path() . PATH_SEPARATOR . "$_SERVER[DOCUMENT_ROOT]/ZendGdata-1.8.1/library"); include_once("Google_Spreadsheet.php"); $u = "[email protected]"; $p = "password"; $ss = new Google_Spreadsheet($u,$p); $ss->useSpreadsheet("My Spreadsheet"); // if not setting worksheet, "Sheet1" is assumed // $ss->useWorksheet("worksheetName"); $row = array ( "name" => "John Doe", "email" => "[email protected]", "comments" => "Hello world" ); if ($ss->addRow($row)) echo "Form data successfully stored using Google Spreadsheet"; else echo "Error, unable to store spreadsheet data"; ?>


No tengo suficientes representantes para agregar un comentario anterior, pero el nuevo método de exportar una hoja a CSV funciona.

Tu url como (públicamente) compartida desde las hojas:

https://docs.google.com/spreadsheets/d/9999999999999/edit?usp=sharing

Cambiar el final /edit?usp=sharing to /export?format=csv

Me gusta:

https://docs.google.com/spreadsheets/d/99999999999999/export?format=csv

Fuente: https://productforums.google.com/d/msg/docs/An-nZtjaupU/llWy4eYFywcJ