dimanche 27 janvier 2013

Version alpha de gDrive Meter Report

Je suis enfin venu à bout de cette version alpha de gDrive Meter Report.
J'emploi la terminologie alpha car il y a encore beaucoup de travail à effectuer sur ce produit :
  • pouvoir renseigner une adresse d'envoi autre que sa propre adresse email
  • pouvoir exporter le résultat dans un tableau Google Docs
  • avoir un Spinner pendant le calcul des données
  • détailler les documents de type "Other" par type (document PDF, MS Office, Images, ...)
En attendant, c'est un premier jet opérationnel (je l'espère) très basique qui vous indiquera le nombre de fichiers présents dans votre Drive (pour l'instant il y a un cumul entre vos propre fichiers et ceux pour lesquels vous avez accès).

C'est une Webapp basée sur Google Apps Script :

Vous serez invité à autoriser le script à accéder à votre Drive et votre GMail pour l'envoi par email.

Pour le moment, je n'ai pas encore inclus une image d'attente pour indiquer que le script est en train de travailler. Donc un peu d'indulgence, surtout si votre Drive est assez fourni.
N'oubliez que le script durera au maximum 6 minutes !
Rendez-vous sur le présent Blog dans mon billet intitulé "Durée d'exécution d'un script Google Apps".

gDrive Meter Team

samedi 26 janvier 2013

Durée d'exécution d'un script Google Apps

La durée d'exécution d'un Google Apps Script semble être limitée à 6 minutes.

Je n'ai pas réussi à trouver cette limite dans l'aide de Google .
Après plusieurs tests, c'est la conclusion à laquelle je suis arrivée.
Cette limite est évoqué dans un tutoriel de Romain Vialard et aussi dans celui pour ScriptDb mais sans plus d'explications :

First, we do a single call to the spreadsheet to retrieve all the data. We could have read our sheet row by row, but JavaScript operations are considerably faster than talking to other services like Spreadsheet. The fewer calls you make, the faster it will go. This is important because each script execution has a maximum run time of 6 minutes.
Depending on how many items are in the database, this script may exceed the current maximum script execution time limit (6 minutes), so the script may terminate prematurely. However, you can run it again as necessary until the database is empty.

J'ai bien essayé de récupérer le message en anglais en changer la langue de mon Drive.
Mais le message d'erreur est resté en français !



J'ai essayé aussi la méthode exception avec un try catch...
Mais ce type d'erreur n'est pas remontée par exception !

function scriptExecutionTime() {
  var startTime = new Date();
  Logger.log(startTime);
  try {
    myFunction();
  } catch(e) {
    var errorTime = new Date();
    Logger.log(errorTime);
    Logger.log(e);
  }
  var endTime = new Date();
  Logger.log(endTime);
}


Logique si on considère que Google limite à 6 minutes l'exécution des scripts Google Apps.
Incompréhensible et difficilement gérable du point de vue du programmeur.

Alors que faire lorsque votre script dure plus de 6 minutes ?
L'optimisation ! Oui mais comment ?

Difficile d'optimiser du code sans savoir quelles sont les parties de ce dernier qui prennent le plus de temps.
Difficile d'optimiser son code quand il faut attendre 6 minutes pour que le verdict tombe : passera ? passera pas ?
Et quand bien même votre code passe aujourd'hui. Qui de demain ?

Alors en attendant d'avoir un profiler pour le code Google Apps Script, que faire ?
Il faut ruser : utiliser Logger.log(new Date()) pour tracer les heures d'exécution des différents section de votre code.
Cela peut-être fastidieux et rébarbatif je le conçois mais c'est une technique qui a toujours fonctionné quelque soit le langage de programmation utilisé.
Dommage qu'au niveau de la plateforme de Google, on ne reçoive pas au fil de l'eau les événements publiés sur la console.

Consulter aussi la log intitulée "Script d'exécution" qui se trouve dans le menu "Affichage | Script d'exécution..."




Éviter d'utiliser - quand c'est possible - la gestion d'exception avec un bloc try catch.
D'après mon expérience, ce traitement m'a l'air consommateur sur la plateforme de Google.

Sat Jan 26 21:20:59 PST 2013
Sat Jan 26 21:21:27 PST 2013

=> 28 s

Sat Jan 26 21:22:39 PST 2013
Sat Jan 26 21:23:15 PST 2013

=> 36 s


Soit quasiment 30% de temps en plus.

Voici un exemple de code appliquée sur un Drive avec beaucoup de fichiers :


function trycatchRaised() {
  throw new Error();
}

function trycatchTime() {
  var pageSize = 200;
  var files = null;
  var token = null;
  var fileOwner = "";
  var fileName = "";
 
  Logger.log(new Date()); 
  do {
    var result = DocsList.getFilesForPaging(pageSize, token);
    files = result.getFiles();
    token = result.getToken();
    for (var i = 0; i < files.length; i++) {        

      try {
//        trycatchRaised();
      } catch(e) {
        fileOwner = "";
      };

      fileName = files[i].getName();
    }
  } while (files.length == pageSize);
  Logger.log(new Date());
}

 

A noter au passage que la fonction getOwner() déclenche une exception sur les fichiers partagés et que - encapsulée dans un try catch - cette fonction consomme tellement de temps à chaque boucle que l'on arrive vite à la limite des fameuses 6 minutes.
        
fileOwner = files[i].getOwner();

Relisez bien votre code et traquer l'erreur classique du traitement inutilement positionné dans une boucle répété x fois. Ce genre d'erreur peut vite devenir chronophage.


Voici donc quelques conseils pour essayer de tenir l'exécution optimum de votre code pour les 6 minutes allouées par Google.


gDrive Meter Team 

mardi 22 janvier 2013

Galère pour associer mon site à mon domaine

J'ai créé mon site avec Google Sites : https://sites.google.com/site/gdrivemeter
J'ai un nom de domaine à associer.
Seulement voilà, cela fait plusieurs jours que j'essaie désespérément d'appliquer les procédures que j'ai trouvé chez Gandi ou sur Google
Rien n'y fait : Google rejette toujours la revendication de propriété du domaine condition sinequanone pour associer mon site à mon nom de domaine.

C'est assez désespérant car, selon moi, j'applique la méthode indiquée et pourtant...
J'ai testé la méthode avec enregistrement TXT ainsi que la méthode CNAME mais toute les 2 ont échoué jusqu'à présent...

Tout d'abord, pour revendiquer la propriété du domaine à Google, il faut aller dans l'interface dédiée pour les Webmasters : https://www.google.com/webmasters/tools/home?hl=fr
Ensuite, il vous faudra sélectionner le site ou blog dont vous souhaitez revendiquer :



Pour dans le menu à gauche "Configuration", aller dans "Utilisateurs" :


 Ensuite, cliquer sur le lien "Gérer les propriétaires de sites" à droite :


Puis, cliquer sur le lien "Utiliser une autre méthode pour valider le site" :


 Choisir la méthode "Fournisseur de nom de domaine"  et sélectionner l'hébergeur de votre nom de domaine dans la liste déroulante :


Par défaut, ce sera la méthode enregistrement TXT qui sera présentée, si vous souhaitez directement utiliser la méthode CNAME, comme je l'ai fait, le lien se trouve tout en bas de la procédure TXT :


Dans ce cas, Google vous fournit 2 valeurs pour le CNAME :


Il faut configurer le CNAME au niveau de l'hébergeur de votre nom de domaine en suivant la procédure indiquée (partiellement). 
Ensuite, valider le fichier de configuration au niveau de l'hébergeur, puis faire une demande de validation par Google en cliquant sur le bouton "Valider".

Si la méthode CNAME ne fonctionne pas, vous pouvez essayer aussi la méthode TXT
Idem Google fournit la clé à renseigner et la procédure pour la renseigner dans la configuration de votre nom de domaine chez votre hébergeur :



A ce jour, je n'ai toujours pas réussi à revendiquer la propriété de mon nom de domaine auprès de Google.



Si quelqu'un à une idée lumineuse...

Finalement, je pense avoir trouver mon erreur...
Et franchement, j'avoue avoir un peu honte...

Depuis le début, je cherche à valider le domaine sites.google.com !!!
Évidemment, ce n'est pas ce domaine que je dois valider vous l'aurez compris...
Il fallait donc rajouter le domaine à gérer et ensuite lancer la procédure de revendication de propriété...
Ouuppsss ! 


Et finalement, tout semble fonctionnait. Le domaine est bien redirigé vers Google Sites.

http://www.gdrivemeter.com

Prochaine étape : un sous-domaine pour pointer vers le présent blog.
 
gDrive Meter Team 

samedi 19 janvier 2013

Démarrage de gDriver Meter

Bonjour,

Mon projet baptisé "gDrive Meter" est démarré.


Google Drive est un outil fantastique pour le stockage de toutes sortes de documents. Mais avec Google Docs, c'est aussi et surtout une redoutable suite bureautique collaborative en ligne.

Seulement voilà, après plusieurs mois d'utilisation de Drive - tant sur un plan personnel que professionnel - les fichiers de toutes sortes s'accumulent et rapidement, on ne sait plus trop à quoi nous sert notre Google Drive. Au niveau professionnel, on aimerait savoir si l'adoption de Docs est réelle ou non. Au niveau personnel, j'aimerai y voir clair dans la répartition du stockage de mon Drive.

L'idée de gDrive Meter est d'offrir des statistiques sur l'utilisation de votre Drive et à l'instar des utilitaires pour disque-dur, offrir une vision de type Treemap de votre Drive.

Pour mener à bien ce projet, les tâches sont nombreuses :
  • réalisation d'un Google Sites
  • configuration de la redirection
  • création et configuration du compte Analytics
  • création et configuration de Blogger
  • création et découverte de AdSense (un premier rejet pour le moment)
  • création et animation du compte Twitter
J'ai encore quelques réglages à affiner sur toute la partie site, blog.

Ensuite, je m'attaquerai au contenu rédactionnel de différents articles sur la construction de gDrive Meter.

Pour le moment, ma maquette est opérationnelle mais comme l'API DocsList  est classée en "Experimental!", j’essuie quelques plâtres. Nous aurons l'occasion d'en discuter ultérieurement.

L'essentiel est d'avoir fixer les objectifs de l'application gDriver Meter : offrir une application qui vous permet d'avoir une vision sur l'usage de Drive.
 
Mon niveau en anglais ne me permettra sûrement pas de poster régulièrement dans la langue de Shakespeare. Mais aujourd'hui, c'est indispensable. Je ferai donc l'effort.

N'hésitez pas à me corriger, cela me permettra de m'améliorer au fil du temps.

gDrive Meter Team 

NDLR: je n'ai aucun lien avec gmailmeter de ShuttleCloud. Mais le merveilleux travail réalisé par Romain Vialard et mon usage de Drive ont abouti à travailler sur un équivalent mais appliqué à Google Drive.