TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 8/9/2014, 5:46 am

Bonjour,

Il te faut une SIM free su tu ne l'as pas déjà, c'est gratuit puisque tu as une Freebox.
Il faut ensuite activer la "notification par sms" : tu reçois un code xyxyxyxyxyx.

Et ensuite tu programme comme suit, xxxxxxxx étant ton identifiant free (pas ton n° de tel) :

Code:
function freeSMS() {
  var libelle = GmailApp.getUserLabelByName('Envoi SMS');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      
      var texte = message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ");
      texte = texte.replace(/([ ]){1,})/gm," ");
      texte = texte.replace(/(\s{2,})/gm," ");

      texte = texte.replace(/([^a-zA-Z0-9 ])/gm,"_");
      
      // depuis abcdef inclus jusque uvwxyz exclus (si non trouvé, totalité du message jusqu'à hauteur de 160 caractères)
      var depuis = Math.max(texte.indexOf("abcdef"),0);
      var jusque = Math.min(((texte.indexOf("uvwxyz")>0)?texte.indexOf("uvwxyz"):160),160 + depuis);
      texte = texte.substring(depuis,jusque);

      var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xyxyxyxyxyx&msg="+encodeURIComponent(texte));
      conversation[i].markRead();
    }
  }
}
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

"Argument non valide"

Message  lecaptaine le 9/9/2014, 12:41 pm

Bonjour,
Je souhaite recevoir un sms via Free Mobile pour m'avertir de la reception d'un message sur mon compte Gmail.
Je voudrais recevoir le sms avec le nom de l'expéditeur, le sujet et son contenu.
J'utilise le script suivant (pour le moment j'ai inséré dans "var reponse" que l'option expediteur):
Code:
// Script permettant de m’envoyer un SMS avec l’URL fournie par Free
/* Un mail arrive dans ma boîte aux lettres : votreAdresseMail@gmail.com
Ce mail provient de l’adresse : expediteur@domaine.com
A la réception de ce mail, celui-ci est déclaré comme important par le filtre mis en place dans Gmail
Si les critères paramétrés dans le filtre correspondent aux caractéristiques du mail, c’est à dire :
– émetteur : expediteur@domaine.com
– sujet :
– mots dans le corps du message :
Alors, le filtre applique le label EnvoiSmsFree
Ce script est lancé toutes les minutes avec le déclencheur de Google Drive qui le traite et envoi un SMS avec l’URL fournie par Free */
function EnvoiSMSFree()
{
// c’est le libelle crée dans votre boite mail
var libelle = 'EnvoiSmsFree';
// c’est l’URL fournie par Free que vous devez compléter avec votre user, votre mot de passe et votre numéro de téléphone portable Free
var urlFree = 'https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg=';
// label est un objet de type GmailLabel (A user-created label in a user’s Gmail account)
var label = GmailApp.getUserLabelByName( libelle );
Logger.log( 'le label qui a ete retourne par la methode getUserLabelByName est :' + label.getName() );
// J’ai placé le test ci-dessous car de temps en temps, le script n’arrive pas à se connecter à Gmail et il m’envoie un mail pour me l’indiquer
if ( label == null )
{
/* UrlFetchApp est une classe de l’API :
(Fetch resources and communicate with other hosts over the Internet.
This service allows scripts to communicate with other applications or access other resources on the web by fetching URLs.
A script can use the URL Fetch service to issue HTTP and HTTPS requests and receive responses.
The URL Fetch service uses Google’s network infrastructure for efficiency and scaling purposes) */
// reponse est un objet de type HTTPResponse (This class allows users to access specific information on HTTP responses)
var reponse = UrlFetchApp.fetch( urlFree + 'Connexion%20à%20Gmail%20impossible' );
Logger.log( 'Connexion a Gmail impossible. le code HTTP recu est :' + reponse.getResponseCode() );
}
else
{
// threads est un objet de type GmailThread (A thread in a user’s Gmail account)
var threads = label.getThreads();
Logger.log( 'valeur de threads : %s', threads.length );
for (var i = 0; i < threads.length; i++)
{
Logger.log( "i est egal a : %s", i );
var courrier = threads[i].getMessages()[0];
var expediteur = courrier.getFrom();
var objet = courrier.getSubject();
var contenu = courrier.getPlainBody()
var dateCourrier = courrier.getDate();
Logger.log( "mail provenant de : %s", expediteur );
Logger.log( "l objet du mail est : %s", objet );
Logger.log( "le contenu du mail est : %s", contenu );
Logger.log( "le mail date de : %s", dateCourrier );
/*
var dateFormatee = Utilities.formatDate( new Date(), "GMT+01:00", "dd MM yyyy" );
// heureFormatee donne l'heure d'hiver pour la France
var heureFormatee = Utilities.formatDate( new Date(), "GMT+01:00", "HH mm ss" );
Logger.log( dateFormatee );
Logger.log( heureFormatee );
*/
var reponse = UrlFetchApp.fetch( urlFree + expediteur );
Logger.log( "le code HTTP recu est : " + reponse.getResponseCode() );
// place le mail que j'ai recu de expediteur@domaine.com a l'adresse : votreAdresseMail@gmail.com à la poubelle
//threads[i].moveToTrash();
}
label.removeFromThreads( threads );
}
}
Malheureusement lorsque le script s'exécute à la réception d'un mail, j'ai un message d'erreur (comme si le script n'acceptait pas certains caractères comme "%" ou "<" :
Script Google a écrit:Argument non valide : https://smsapi.free-mobile.fr/sendmsg?
Avec comme détail :
J'ai essayé de rentrer l'url sur ma page Internet et je reçois bien le message avec l'expéditeur.
Pourquoi cela ne marche pas avec le script, pouvez-vous m'aider.
Merci beaucoup

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 5:24 pm

lecaptaine a écrit:Bonjour,
Je voudrais recevoir le sms avec le nom de l'expéditeur, le sujet et son contenu.

Cela fait beaucoup (trop) d'informations pour un sms limité à 160 caractères ! certes on peut en émettre plusieurs à la file mais cela ne sera lisible qu'avec un smartphone.

Du reste, dans ce script je ne vois que l'expéditeur ! et pas les autres informations.
Code:
var reponse = UrlFetchApp.fetch( urlFree + expediteur );

Attention, dans UrlFetchApp il faut encoder avec encodeURIComponent car sinon le mail s'arrête brutalement au premier espace ou premier & ou premier retour à la ligne.
Code:
var reponse = UrlFetchApp.fetch( urlFree + encodeURIComponent(expediteur) );

Mais pas sûr que ce soit la seule cause ... essaie et renvoie le problème.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 5:53 pm

Merci beaucoup pour votre réponse...
Cela fonctionne, actuellement j'utilise donc :
Code:
  var reponse = UrlFetchApp.fetch( urlFree + encodeURIComponent (expediteur + ', Sujet: ' + objet));
Et je reçois bien l'expéditeur et le sujet du mail.
Je voudrais tenter avec le contenu du message, y a t-il quelque chose à rajouter car si j'ajoute :
Code:
+ contenu +
il affiche un message d'erreur suite à l'exécution du script.

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 5:57 pm

Ajoute ces 3 lignes :

Code:
      contenu  = contenu.replace(/(\r\n|\n|\r)/gm," ");
      contenu  = contenu.replace(/([&|nbsp;]){1,})/gm," ");
      contenu  = contenu.replace(/(\s{2,})/gm," ");

AVANT  :
Code:
var réponse ...

Le but est de rendre le contenu digeste pour free !
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 6:43 pm

J'ai un message d'erreur suite à l'insertion des trois lignes Question
Script Google a écrit:SyntaxError: Aucune correspondance trouvée pour ) dans l'expression rationnelle
Merci d'avance


Dernière édition par lecaptaine le 9/9/2014, 7:09 pm, édité 1 fois

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 7:08 pm

Essaie ceci (il devait manquer une parenthèse) :

Code:
      contenu  = contenu.replace(/(\r\n|\n|\r)/gm," ");
      contenu  = contenu.replace(/((&nbsp;){1,})/gm," ");
      contenu  = contenu.replace(/(\s{2,})/gm," ");

Ensuite, si cela ne fonctionne pas, supprime une à une les lignes pour savoir celle qui coince !
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 7:24 pm

Alors il n'y a plus de :
Google script a écrit:SyntaxError: Aucune correspondance trouvée pour ) dans l'expression rationnelle
Mais mon message d'origine :
Google script a écrit:Échec de la requête pour https://smsapi.free-mobile.fr/sendmsg?
Et comme détail :
Google script a écrit:Échec de la requête pour https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg=XXXXXXr%20XXXXXX%20%3CXXXXXXXXXX%40free.fr%3E%2C%20Sujet%3A%20Fwd%3A%20R%C3%A9ponse%20au%20sujet%20%3A%20TUTORIEL%20%3A%20Utiliser%20Google%20pour%20envoyer%20un%20SMS%20%C3%A0%20la%20r%C3%A9ception%20d%E2%80%99une%20alerte%20mail%2C%20Message%3A%20%20Bonjour%20lecaptaine%2C%20Vous%20recevez%20cet%20email%20parce%20que%20vous%20surveillez%20le%20sujet%2C%20%22TUTORIEL%20%3A%20Utiliser%20Google%20pour%20envoyer%20un%20SMS%20%3F%20la%20r%3Fception%20d%3Fune%20alerte%20mail%22%20sur%20%22Forum%20Myfox%20%7C%20s%3Fcurit%3F%2C%20vid%3Fosurveillance%20et%20domotique%22%2C%20qui%20a%20re%3Fu%20une%20r%3Fponse%20depuis%20votre%20derni%3Fre%20visite.%20Vous%20pouvez%20utiliser%20le%20lien%20suivant%20pour%20voir%20les%20r%3Fponses%20qui%20ont%20%3Ft%3F%20faites.%20Aucune%20autre%20notification%20ne%20vous%20sera%20envoy%3Fe%20jusqu'%3F%20ce%20que%20vous%20visitiez%20le%20sujet.%20http%3A%2F%2Fmyfox.forumactif.org%2Ft1813p45-tutoriel-utiliser-google-pour-envoyer-un-sms-a-la-reception-dune-alerte-mail%2322542%20Si%20vous%20ne%20voulez%20plus%20surveiller%20ce%20sujet%20vous%20pouvez%2C%20soit%20cliquer%20sur%20le%20lien%20%22Arr%3Fter%20de%20surveiller%20ce%20sujet%22%20en%20bas%20du%20sujet%20ci-dessus%2C%20soit%20cliquer%20sur%20le%20lien%20suivant%3A%20http%3A%2F%2Fmyfox.forumactif.org%2Ft1813-tutoriel-utiliser-google-pour-envoyer-un-sms-a-la-reception-dune-alerte-mail%3Funwatch%3Dtopic%20--%20Forum%20MyFOX%20Home%20Control%20Solutions%20---%20Ce%20courrier%20%3Flectronique%20ne%20contient%20aucun%20virus%20ou%20logiciel%20malveillant%20parce%20que%20la%20protection%20avast!%20Antivirus%20est%20active.%20http%3A%2F%2Fwww.avast.com%20. Code renvoyé : 400 (ligne 58, fichier "Code")

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 7:27 pm

Trop long à tous les coups ... va falloir couper un bout !


Code:
var texte = (expediteur + ', Sujet: ' + objet));
texte = texte.substring(0,320);
var reponse = UrlFetchApp.fetch( urlFree + encodeURIComponent(texte));
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 7:33 pm

Oui en effet j'ai fait un essai avec un contenu de mail moins important et cela fonctionne.
Est-il possible de sectionner automatiquement le contenu du mail en plusieurs sms ?

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 7:34 pm

Pour tronquer le message, voir juste ci-avant....

Le code existe plus haut dans les messages, car celui duquel tu es parti est loin d'être optimisé.

Mais bon, on va y arriver ...

lecaptaine a écrit:Est-il possible de sectionner automatiquement le contenu du mail en plusieurs sms ?

Oui on peut aussi envoyer plusieurs mails, mais je ne sais pas si free supporte des requêtes en rafale.
Je pense qu'il est important d'avoir un message ciblé et clair, pour le reste il faut aller voir dans la messagerie le reste des informations.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 8:00 pm

Alors j'ai remplacé mon script par pour recevoir le contenu de mes mails par plusieurs si il faut :
Code:
function freeSMS() {
  var libelle = GmailApp.getUserLabelByName('EnvoiSmsFree');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
     
      var texte = message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ");
      texte = texte.replace(/([&nbsp;]){1,})/gm," ");
      texte = texte.replace(/(\s{2,})/gm," ");

      texte = texte.replace(/([^a-zA-Z0-9 ])/gm,"_");
     
      // depuis abcdef inclus jusque uvwxyz exclus (si non trouvé, totalité du message jusqu'à hauteur de 160 caractères)
      var depuis = Math.max(texte.indexOf("abcdef"),0);
      var jusque = Math.min(((texte.indexOf("uvwxyz")>0)?texte.indexOf("uvwxyz"):160),160 + depuis);
      texte = texte.substring(depuis,jusque);

      var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg="+encodeURIComponent(texte));
      conversation[i].markRead();
    }
  }
}
Et j'ai ce message :
Google script a écrit:SyntaxError: Aucune correspondance trouvée pour ) dans l'expression rationnelle
Texte en rouge a écrit:/(\r\n|\n|\r)/gm ----- /([ ]){1,})/gm ----- /(\s{2,})/gm ----- /([^a-zA-Z0-9 ])/gm

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 9:43 pm

Oui, désolé il manque une parenthèse ...

Code:
function freeSMS() {
  var libelle = GmailApp.getUserLabelByName('EnvoiSmsFree');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
     
      var texte = message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ");
      texte = texte.replace(/(&|nbsp;)/gm," ");
      texte = texte.replace(/(\s{2,})/gm," ");

      texte = texte.replace(/([^a-zA-Z0-9 ])/gm,"_");
     
      // depuis abcdef inclus jusque uvwxyz exclus (si non trouvé, totalité du message jusqu'à hauteur de 160 caractères)
      var depuis = Math.max(texte.indexOf("abcdef"),0);
      var jusque = Math.min(((texte.indexOf("uvwxyz")>0)?texte.indexOf("uvwxyz"):160),160 + depuis);
      texte = texte.substring(depuis,jusque);

      var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg="+encodeURIComponent(texte));
      conversation[i].markRead();
    }
  }
}
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 9:52 pm

Et pour recevoir le mail en entier sous plusieurs sms ?
Ho la la dsl j'en demande beaucoup Shocked

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 9/9/2014, 9:56 pm

Je regarde demain, pas sûr que cela fonctionne.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 9/9/2014, 9:59 pm

Merci beaucoup pour ta réactivité et ton savoir faire cheers

Il me faudrait dans l'idéal ajouter :
- l'expéditeur
- Le sujet
- La totalité du mail en plusieurs sms si il le faut.

Encore merci beaucoup pour ta disponibilité

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 10/9/2014, 5:52 am

Code:
function freeSMS() {
  var libelle = GmailApp.getUserLabelByName('EnvoiSmsFree');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      
      var texte =  "De " + message.getFrom() + " Titre " + message.getSubject() + " Message " + message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ");
      texte = texte.replace(/(&|nbsp;)/gm," ");
      texte = texte.replace(/(\s{2,})/gm," ");

      texte = texte.replace(/([^a-zA-Z0-9 ])/gm,"_");
      
      var depuis = 0;
      var jusque = texte.length ;
      var taille = 160;
      
      while (depuis < jusque) {
        var longueur = texte.substring(depuis,depuis + taille).lastIndexOf(" ");
        var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg="+encodeURIComponent(texte.substring(depuis,depuis + longueur)));
        depuis = depuis + longueur + 1;
        Utilities.sleep(5000);
      }

      conversation[i].markRead();
    }
  }
}
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 10/9/2014, 9:12 am

Bonjour,
J'ai essayé le script et en effet cela fait beaucoup de sms (9 en tout pour un message assez court)
Je vais donc garder comme contenu : l'expéditeur et le sujet.
J'utilise le script suivant qui fonctionne bien :
Code:
// Script permettant de m’envoyer un SMS avec l’URL fournie par Free
/* Un mail arrive dans ma boîte aux lettres : votreAdresseMail@gmail.com
Ce mail provient de l’adresse : expediteur@domaine.com
A la réception de ce mail, celui-ci est déclaré comme important par le filtre mis en place dans Gmail
Si les critères paramétrés dans le filtre correspondent aux caractéristiques du mail, c’est à dire :
– émetteur : expediteur@domaine.com
– sujet :
– mots dans le corps du message :
Alors, le filtre applique le label EnvoiSmsFree
Ce script est lancé toutes les minutes avec le déclencheur de Google Drive qui le traite et envoi un SMS avec l’URL fournie par Free */
function EnvoiSMSFree()
{
// c’est le libelle crée dans votre boite mail
var libelle = 'EnvoiSmsFree';
// c’est l’URL fournie par Free que vous devez compléter avec votre user, votre mot de passe et votre numéro de téléphone portable Free
var urlFree = 'https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&to=XXXXXXXXXX&msg=';
// label est un objet de type GmailLabel (A user-created label in a user’s Gmail account)
var label = GmailApp.getUserLabelByName( libelle );
Logger.log( 'le label qui a ete retourne par la methode getUserLabelByName est :' + label.getName() );
// J’ai placé le test ci-dessous car de temps en temps, le script n’arrive pas à se connecter à Gmail et il m’envoie un mail pour me l’indiquer
if ( label == null )
{
/* UrlFetchApp est une classe de l’API :
(Fetch resources and communicate with other hosts over the Internet.
This service allows scripts to communicate with other applications or access other resources on the web by fetching URLs.
A script can use the URL Fetch service to issue HTTP and HTTPS requests and receive responses.
The URL Fetch service uses Google’s network infrastructure for efficiency and scaling purposes) */
// reponse est un objet de type HTTPResponse (This class allows users to access specific information on HTTP responses)
var reponse = UrlFetchApp.fetch( urlFree + 'Connexion%20à%20Gmail%20impossible' );
Logger.log( 'Connexion a Gmail impossible. le code HTTP recu est :' + reponse.getResponseCode() );
}
else
{
// threads est un objet de type GmailThread (A thread in a user’s Gmail account)
var threads = label.getThreads();
Logger.log( 'valeur de threads : %s', threads.length );
for (var i = 0; i < threads.length; i++)
{
Logger.log( "i est egal a : %s", i );
var courrier = threads[i].getMessages()[0];
var expediteur = courrier.getFrom();
var objet = courrier.getSubject();
var contenu = courrier.getPlainBody()
var dateCourrier = courrier.getDate();
Logger.log( "mail provenant de : %s", expediteur );
Logger.log( "l objet du mail est : %s", objet );
Logger.log( "le contenu du mail est : %s", contenu );
Logger.log( "le mail date de : %s", dateCourrier );
/*
var dateFormatee = Utilities.formatDate( new Date(), "GMT+01:00", "dd MM yyyy" );
// heureFormatee donne l'heure d'hiver pour la France
var heureFormatee = Utilities.formatDate( new Date(), "GMT+01:00", "HH mm ss" );
Logger.log( dateFormatee );
Logger.log( heureFormatee );
*/
      contenu  = contenu.replace(/(\r\n|\n|\r)/gm," ");
      contenu  = contenu.replace(/((&nbsp;){1,})/gm," ");
      contenu  = contenu.replace(/(\s{2,})/gm," ");
var reponse = UrlFetchApp.fetch( urlFree + encodeURIComponent ( expediteur + ',  ' + objet ));
Logger.log( "le code HTTP recu est : " + reponse.getResponseCode() );
// place le mail que j'ai recu de expediteur@domaine.com a l'adresse : votreAdresseMail@gmail.com à la poubelle
//threads[i].moveToTrash();
}
label.removeFromThreads( threads );
}
}

Peux-tu me le simplifier si cela est possible ?


Dernière édition par lecaptaine le 10/9/2014, 9:14 am, édité 1 fois

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 10/9/2014, 9:13 am

En tout cas merci beaucoup pour ta disponibilité .... king
J'espère que cela pourra aider d'autres personnes dans le futur study

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 10/9/2014, 4:56 pm

lecaptaine a écrit:J'ai essayé le script et en effet cela fait beaucoup de sms (9 en tout pour un message assez court)
Au moins, free a bien encaissé, mais j'avais mis une temporisation de 5 secondes entre chaque sms, on évite l'erreur 402, de quoi également les recevoir dans le bon ordre, sinon bonjour le puzzle. Maintenant, sms veut bien dire "short", donc en effet il faut faire au plus court.

lecaptaine a écrit:Peux-tu me le simplifier si cela est possible ?

Quand cela fonctionne, pourquoi changer ?

Pour simplifier, la plus belle façon de le faire est de le faire soi-même, cela rend le code maintenable par soi-même. Cela permet de bien distinguer ce qui est des fonctions, variables, attributs et méthodes.

Si je devais simplifier, je retiendrais ceci :
Code:
function freeSMS() {
  var libelle = GmailApp.getUserLabelByName('EnvoiSmsFree');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];  
      var texte =  "De " + message.getFrom() + " : " + message.getSubject() ;
      var reponse = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=XXXXXXXXXXXXXX&msg="+encodeURIComponent(texte));
      conversation[i].markRead();
    }
  }
}

Epicétou


NB : rappel codes retour free
Le code de retour HTTP indique le succès ou non de l’opération :
- 200 : Le SMS a été envoyé sur votre mobile.
- 400 : Un des paramètres obligatoires est manquant.
- 402 : Trop de SMS ont été envoyés en trop peu de temps.
- 403 : Le service n’est pas activé sur l’espace abonné, ou login / clé incorrect.
- 500 : Erreur côté serveur. Veuillez réessayez ultérieurement.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  lecaptaine le 12/9/2014, 10:09 am

Bonjour,
Je viens tout juste de tester le script simplifié et cela fonctionne très bien.
En effet tout tes différents posts et https://developers.google.com/apps-script/reference/gmail/ m'ont permis de mieux comprendre ce langage qui m'était inconnu...
Je te remercie.... Wink

lecaptaine
Habitué
Habitué

Messages : 11
Date d'inscription : 09/09/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 12/9/2014, 1:13 pm

Ce fut un plaisir pour moi aussi de creuser ce thème ... et l'utiliser au quotidien.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 13/9/2014, 10:30 am

jamaique62 a écrit:Bonjour
Je confirme que google depuis quelques semaines limite les SMS à 3 par jour.
Disposant d une freebox, je voudrai utiliser le script "free" correspondant.
Comment dois je le configurer?
Merci
C'est ce que j'avais aussi écrit ... et je dois me contredire : je viens d'en recevoir 13 en 10 mn sur une intrusion dans le jardin (captée par la caméra bwan).
NB : c'était ma femme qui rentrait des courses alors que je faisais un réglage de zone de détection partielle.

Et cette fois-ci, c'est IFTTT qui s'est auto limité. En réalité je ne sais pas ce qui s'est passé mais je ne retrouve bien "que" 3 mails dans le label correspondant, donc sans doute que le code est un long et qu'il ne chope que le dernier message non lu. Pas grave, l'essentiel est d'avoir eu l'alerte.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

séparation des mots dans le filtre g mail

Message  jamaique62 le 14/9/2014, 6:34 pm

Bonsoir
Une question peut etre simplette :
avec quoi sépare t on les items des filtres google drive?
Merci

jamaique62
Habitué
Habitué

Messages : 63
Date d'inscription : 14/01/2014
Localisation : Pas de Calais

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 14/9/2014, 9:35 pm

Peux-tu préciser ?

Les filtres sont dans Gmail, indépendamment de Google drive. Cela permet par exemple de ranger dans un dossier appelé "label", ou renvoyer vers une autre adresse mail, marquer comme important etc... en fonction de critères précis (l'émetteur, des mots clés) c'est purement du traitement de courriel avec Gmail sans script.

QU'entends-tu par "item" ?

avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum