-1
votes

Attribuer un objet de Google scripts à la variable locale à l'aide d'Ajax

J'ai écrit un script Google personnalisé qui apporte un objet pour moi et j'aimerais pouvoir l'appeler et l'attribuer à une variable qui est ensuite utilisée pour afficher des données sur un site Web.

HTML Header : strong> p> xxx pré>

fichier de scripts Google: strong> p> xxx pré>

Sortie de scripts Google ( Utilisation de l'extension de chrome View JSON): p> xxx pré>

Il s'agit d'un lien public avec l'objet / les données que je veux dessus (le même objet indiqué ci-dessus): application Web: https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec

Donc, fondamentalement, quiconque l'utilise devrait pouvoir y accéder. J'ai juste besoin d'un moyen d'attribuer ces données à une variable JS locale. Le script Google Feuilles est publié comme application Web. Si je ne me trompe pas, il y a un réglage pour permettre à quiconque, même anonyme d'y accéder. P>

Voici ma tentative d'une demande Ajax: strong> p>

var infected_data = {
  cn: "83",
  th: "0",
  mo: "0",
  au: "0",
  sg: "0",
  tw: "0",
  us: "0",
  jp: "0",
  my: "0",
  kr: "0",
  fx: "0",
  vn: "0",
  kh: "0",
  ca: "0",
  ci: "0",
  np: "0",
  lk: "0",
  
};


6 commentaires

Envoyer JSON est le moyen le plus simple.


Quelque chose comme ça? :

3 Réponses :


1
votes

Vous avez probablement des problèmes avec l'appel d'être asynchrones, ce qui signifierait que vous lisez les données avant qu'il ne soit réellement renvoyé des serveurs de Google. Essayez d'utiliser promesses code> et le FETCH code> API

const url = "https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec";

// Declare an async function
const getData = async () => {
// Use the await keyword to let JS know this variable has some latency so it should wait for it to be filled 
// When the variable is fetched, use the .then() callback to carry on 
  const DataJSON = await fetch(url).then(response => 
    response.json()
  ).then(parsedResponse => parsedResponse)

  return await DataJSON
};

console.log(await getData())


3 commentaires

Jetez un coup d'œil à la poste mise à jour, c'est ce que j'obtiens dans la console. N'est toujours pas semblable de donner les données, ou peut-être que c'est juste dans un autre format étrange.


Oups, ok je vois l'objet avec toutes ses données !!! Doux! Cela semble fonctionner bien. Maintenant, le seul problème à laquelle je pense est qu'il n'est pas attribué correctement à Var infecté_data. Edit: J'ai oublié, les valeurs doivent être des chaînes, pas des chiffres. Y a-t-il un moyen rapide et facile de les convertir.


Et comment puis-je accéder à l'objet à l'intérieur de la promesse?



1
votes

En supposant que les données ne soient pas sensibles, vous pouvez utiliser JSONP pour contourner Cors CORS:

SERVER: H3>
<script>function infect(data){ infectedData =  data }</script>
<script src="URL_OF_YOUR_SCRIPT"></script>


0 commentaires

1
votes

Répondre à la question pour convertir les entiers en chaînes: Essayez quelque chose comme ceci: xxx


0 commentaires