Envoyer un SMS automatiquement
Bonjour,
Cela faisait un moment que je n'étais pas venue vous embêter mais je suis confrontée à un nouveau problème.
Je dois envoyer des messages automatiques à deux personnes qui ne disposent pas de mail (et oui, ça existe encore).
Aussi, j'ai décidé de leur envoyer un SMS automatique.
J'ai fait des recherches sur internet et je suis tombée sur l'extension Sheet SMS qui peut être utilisé dans google sheet. Je l'ai testé manuellement et ça fonctionne mais je veux l'automatiser (tant qu'à faire).
Avec cette extension Il est possible d'envoyer des SMS directement à partir du sheet mais ça a un coût, ou je l'envoie par le biais de mon smartphone et c'est pris en compte dans mon forfait. Dans ce cas, il faut juste que je valide dans l'application sur mon smartphone pour l'envoi mais je n'ai pas à gérer les jours d'envoi et les textes. Ca j'arriverai à gérer.
Je mets en PJ un tableau simplifié. Il contient le numéro de téléphone en colonne B, le texte en colonne C, la date à laquelle doit être envoyé le SMS en colonne D (je compare avec la date du jour en D1 et je mets OK en colonne E quand les deux sont identiques)
Le numéro de téléphone et le texte sont différents pour chaque ligne et sont calculés en fonction d'autres informations que je n'ai pas mis ici.
Pour automatiser la chose, j'ai fait un script que je mettrai ensuite dans la liste des déclencheurs tous les matins. Il vérifiera si il y a un OK dans la colonne E et lancera les SMS.
Mon soucis se trouve dans la ligne 7 de mon script. Je voudrait que la formule soit automatiser en fonction de la variable i mais je ne sais pas comment faire. J'ai mis C2,B2 mais je voudrais en gros avoir Ci,Bi
function sendSMS() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SMS')
var count = ss.getRange('E1').getValue();
for (var i = 2; i <= count; i++) {
if (ss.getRange(i, 5).getValue() == "OK") {
ss.getRange(i, 6).activate();
ss.getCurrentCell().setFormula('=SENDSMSWITHMOBILE(C2,B2)')
}}}Je ne sais pas si c'est possible.
Sinon peut-être que l'un de vous à une autre solution que la mienne.
Dans tous les cas, je suis preneuse.
Merci
Co
https://docs.google.com/spreadsheets/d/1iY_H-V-Z8Ip4UW7UD5-G3jASxhQKckJC5BWM90ESwh4/edit?usp=sharing
Bonsoir,
N'ayant pas eu de réponse (ça arrive), j'ai continué mes recherches et j'ai surtout fait fonctionné mes neurones.
Etant la reine de la bidouille, j'ai trouvé une solution un peu tordue, je la partage avec vous, des fois que quelqu'un soit intéressé.
Plutôt que de comprendre comment programmer mon script en insérant une variable dans ma formule(à priori, elle aime pas trop ça), j'ai mis une formule directement dans les cellules avec l'utilisation de la fonction IF.
=IF(E2="OK";SENDSMSWITHMOBILE(C2;B2)))
Avant minuit, j'ai un script qui efface les formules afin de ne pas envoyer de SMS à 1 h du matin (il paraît que ça ne se fait pas…) et dans la matinée, j'ai un autre script qui recrée mes formules pour savoir si des SMS doivent être envoyés. Pour ces deux scripts, j'utilise un déclencheur à une heure donnée.
Pour utiliser l'extension Sheet SMS en envoyant les SMS via son smartphone, il faut non seulement installer l'extension dans Google sheet mais également l'application sur le smartphone. Malheureusement, il faut vérifier si un SMS doit être envoyé du smartphone en ouvrant l'application, on ne reçoit pas de notification. Afin d'éviter de le faire tous les jours mais seulement ceux où un SMS doit être envoyé, j'ai donc créé un script qui m'envoie un mail les jours où il y a un SMS afin de me prévenir sans ouvrir l'appli.
Voici les deux scripts que j'ai mis en place avec déclencheur.
function sendSMS() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('SMS'), true);
spreadsheet.getRange('F2:F1000').activate();
spreadsheet.getActiveRangeList().clear({ contentsOnly: true, skipFilteredRows: true });
spreadsheet.getRange('F2').activate();
spreadsheet.getCurrentCell().setFormula('=IF(A2="";"";IF(E2="OK";SENDSMSWITHMOBILE(C2;B2)))');
spreadsheet.getRange('F2:F1000').activate();
spreadsheet.getRange('SMS!F2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
}
function MAZSMS() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('SMS'), true);
spreadsheet.getRange('F:F').activate();
spreadsheet.getActiveRangeList().clear({ contentsOnly: true, skipFilteredRows: true });
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('SMS'), true);
spreadsheet.getActiveSheet().hideSheet()
};Je remets ici le lien du fichier test avec les modifications apportées.
https://docs.google.com/spreadsheets/d/1iY_H-V-Z8Ip4UW7UD5-G3jASxhQKckJC5BWM90ESwh4/edit?usp=sharing
Merci à tous ceux qui m'ont lu et qui ont éventuellement réfléchi à mon problème.
Bonne soirée
Co
Beau travail ! N'ayant pas de solution, je m'étais abstenu. Quoique j'en ai bien une mais très spécifique. En France, j'ai entre autres un contrat free à 2€. Et free offre la possibilité d'envoyer des sms via un lien http de type
var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xyxyxyxyxyx&msg="+encodeURIComponent(texte));