web-dev-qa-db-fra.com

Google Script pour voir si le texte contient une valeur

J'ai un formulaire Google qui, lorsque l'utilisateur le soumet, déclenchera l'exécution de ma fonction, qui consiste à créer un résumé de ce qu'ils ont soumis en tant que Google Doc. Je sais qu’il peut envoyer automatiquement un courrier électronique, mais j’ai besoin de l’avoir formaté de manière à ce que mon utilisateur puisse le modifier ultérieurement. 

Il y a quelques cases à cocher sur le formulaire - mais la méthode getResponse () est uniquement renseignée avec les éléments cochés et j'en ai besoin pour afficher tous les choix possibles. Ensuite, je vais indiquer en quelque sorte ce qui a été vérifié. 

Je ne peux pas trouver un moyen de voir si un texte contient une valeur . Comme en Java avec une chaîne, je pourrais faire .contains("9th") ou .indexOf("9th") >=0 et je saurais alors que la chaîne contient 9ème. Comment puis-je faire cela avec les scripts Google? J'ai examiné toute la documentation et j'ai l'impression que ce doit être la chose la plus facile qui soit. 

var grade = itemResponse.getResponse();

Besoin de voir si le grade contient 9ème. 

Merci!

21
Sharon

Google Apps Script est javascript, vous pouvez utiliser toutes les méthodes de chaîne ...

var grade = itemResponse.getResponse();
if(grade.indexOf("9th")>-1){do something }

Vous pouvez trouver doc sur de nombreux sites, celui-ci par exemple.

37
Serge insas

J'ai dû ajouter un .toString à l'élément dans le tableau de valeurs. Sans cela, il ne correspondrait que si le corps entier de la cellule correspond à searchTerm.

function foo() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName('spreadsheet-name');
    var r = s.getRange('A:A');
    var v = r.getValues();
    var searchTerm = 'needle';
    for(var i=v.length-1;i>=0;i--) {
        if(v[0,i].toString().indexOf(searchTerm) > -1) {
            // do something
        }
    }
};
0
GraehamF

J'ai utilisé la méthode de script Google Apps indexOf () et ses résultats étaient erronés. J'ai donc écrit la petite fonction Myindexof (), au lieu de indexOf:

function Myindexof(s,text)
{
  var lengths = s.length;
  var lengtht = text.length;
  for (var i = 0;i < lengths - lengtht + 1;i++)
  {
    if (s.substring(i,lengtht + i) == text)
      return i;
  }
  return -1;
}

var s = 'Hello!';
var text = 'llo';
if (Myindexof(s,text) > -1)
   Logger.log('yes');
else
   Logger.log('no');
0
Oscar