2017-08-14 5 views
0

J'essaie d'écrire un simple plugin pour WordPress en utilisant PHP/JS. Le plugin n'a qu'un seul objectif, créer un widget. Pour ceux d'entre vous qui ne connaissent pas l'implémentation du plugin WordPress, ce n'est pas trop compliqué - je peux utiliser JS/PHP comme d'habitude. Pour les besoins de cette question, un seul fichier PHP/HTML peut donner la réponse que je recherche.API Google Sheets: lecture de la valeur d'une seule cellule à partir d'une feuille publique

J'ai une feuille accessible au public avec les paramètres de partage suivants:

spreadsheet settings

Tout ce que je veux faire maintenant est de récupérer la valeur d'une seule cellule sur une seule feuille de calcul. La feuille de calcul est appelée Live Summary et la cellule est E20.

spreadsheet

J'ai obtenu ce travail en utilisant l'authentification OAuth 2.0. Cependant, je ne veux pas que l'utilisateur doive s'authentifier pour voir cette information. Je veux que mon site Web affiche la valeur de cette cellule à tout moment, comme s'il s'agissait d'une fonctionnalité du site Web ou comme si je la tirais de la base de données MySQL sur laquelle WordPress est installé.

how it should look

J'ai lu sur l'utilisation de certains paramètres GET de l'API Google Sheets, mais pour la vie de moi, je ne sais même pas par où commencer si je ne suis pas en utilisant des jetons OAuth.

Quelqu'un pourrait s'il vous plaît a) dites-moi si cela est possible et, si c'est le cas, b) pointez-moi dans la bonne direction pour commencer?

De préférence en utilisant JavaScript - mais je pourrais aussi faire face à PHP.

+0

Voici quelques options pour vous: https://stackoverflow.com/a/42757972 – mtkopone

+0

Merci pour ce @ mtkopone, c'est un lien utile. J'ai vérifié toutes ces ressources et je ne suis pas plus près de mon problème principal - je ne sais pas comment (ou, si c'est même possible - il doit être, sûrement ?!) accéder aux API * sans * autorisant. Ou peut-être que j'ai besoin d'utiliser un type différent d'autorisation qui est authentifié une fois par un «bot» afin que tous les utilisateurs puissent accéder à l'information. – dunc

Répondre

1

Voici comment vous pouvez le faire fonctionner sans OAuth.

1) Rendre votre feuille publique pour tout le monde sur le web. (Comme vous l'avez déjà.)

2) publier: dans les fiches Google UI, accédez à Fichier> Publier sur le web ...

3) Choisissez le type Link, document, page Web et cliquez sur Publier. Ensuite, vous pouvez (encore) utiliser l'API héritée documentée dans https://developers.google.com/sheets/api/v3/worksheets pour accéder à vos données.

L'URL pour accéder aux données est de la forme:

https://spreadsheets.google.com/feeds/<WHAT_KIND_OF_DATA>/<YOUR_SHEET_KEY>/<YOUR_SPREADSHEET_SHEET:)>/public/full?alt=json

Ainsi, par exemple, les données pour une feuille que j'ai publié (ne contenant que le texte « Je suis E20 » à E20) peut être trouvé à:

https://spreadsheets.google.com/feeds/cells/1TbMrtJl01i-Q5YudlhdAB_E1LTYkkLswnql5LHyiIuk/1/public/full?alt=json

Il existe également des options pour publier un sous-ensemble des données, ce qui pourrait être mieux pour vous. Mais j'espère que cela vous fera avancer.

EDIT: Prochaines étapes:

Le problème suivant pourrait être CORS. Vous pouvez le contourner avec, par exemple, JSON-P. Voici une solution JSON-P travailler pleinement à charger le contenu de la E20 cellules sur ma feuille:

<html> 
<body> 
    <pre id='data'></pre> 
</body> 
<script> 
    const onDataLoaded = (data) => { 
    const e20Content = data.feed.entry.find((entry) => entry.title.$t == 'E20').content.$t 
    document.getElementById('data').innerHTML = e20Content 
    } 
</script> 
<script src="https://spreadsheets.google.com/feeds/cells/1TbMrtJl01i-Q5YudlhdAB_E1LTYkkLswnql5LHyiIuk/1/public/basic?alt=json-in-script&callback=onDataLoaded"></script> 
</html> 
+0

* EDIT * Je n'ai pas lu le morceau précédent de votre post où vous avez expliqué cette réponse, s'il vous plaît ignorer! C'est exactement ce que je voulais - votre exemple de code a fonctionné hors de la boîte (avec mon ID de feuille de calcul). Je vais récompenser la prime lorsqu'elle sera disponible dans 19 heures - merci. – dunc