web-dev-qa-db-fra.com

Script pour changer automatiquement la valeur du texte

Dans GDocs, sous Outils> Préférences, je peux définir des corrections automatiques. Ainsi, si je tape l*, il est écrit bas, h* -> élevé, etc.

Dans Google Spreadsheet, rien de tel. Puis-je le faire avec un script? Comment?

1
janeh

Comme Eddy vous l'a dit, vous pouvez le faire en utilisant le déclencheur onEdit.

Code

//global
var ss = SpreadsheetApp.getActiveSpreadsheet();
var name = "Preferences";

function onEdit(e) {
  // clear cache if on preferences sheet
  if(ss.getActiveSheet().getName() == name) {
    CacheService.getPrivateCache().remove(name)
  } else {
    // get all the data
    var prefs = JSON.parse(preferences()); 
    var cValue = e.value, cRange = e.range;  
    var pref = cValue.match(/\b[a-z]+\*\B/);

    // find replacement text
    for(var i=1, iLen=prefs.length; i<iLen; i++) {
      if(pref == prefs[i][1] && prefs[i][0] == "Yes") {
        var text = prefs[i][2];
      }
    } 

    // make the change
    if(text.length == cValue.length) {
      cRange.setValue(prefs[i][2]);
    } else {
      var modcValue = cValue.replace(pref, text);
      cRange.setValue(modcValue);
    }
  }
}

function preferences() {
  // check if cache is available
  var cache = CacheService.getPrivateCache();
  var cached = cache.get(name);
  if (cached != null) {  
    return cached;
  }

  // collect data  
  var data = ss.getSheetByName(name).getDataRange().getValues();
  var jsonData = JSON.stringify(data);
  cache.put(name, jsonData, 21000);
  return jsonData;
}

A expliqué

Le script va d'abord vérifier si la feuille de préférences a été modifiée. Si yes, le cache sera effacé/supprimé. Après cela, il récupérera toutes les données de la feuille de références ou du cache. Ensuite, il déterminera le raccourci à utiliser, au moyen de match et regex. Si les critères sont remplis, la valeur de colonne avec sera ajoutée.

Copiez le tableur que j'ai préparé et regardez sous Outils, Editeur de script. Vous y trouverez le script. Appuyez sur le bouton bug pour valider/authentifier le script.

Exemple

J'ai créé un exemple de fichier pour vous: n script permettant de modifier automatiquement la valeur du texte

Remarque

  • Pour le moment, cela ne fonctionne que dans l'ancienne version de Google Spreadsheet.
  • Mieux serait d'utiliser un script autonome, en utilisant ScriptDb. Ceci peut être incorporé beaucoup plus facilement dans d'autres feuilles de calcul, via une bibliothèque.
  • Le remplacement ne fonctionnera qu'en combinaison avec un *. Plusieurs majuscules sont autorisées (voir exemple).
  • Un seul texte de remplacement sera remplacé.

Edit (28-12-2013)

Le regex, pour correspondre au texte de remplacement, était tout faux. Ajout de la possibilité de changer le texte de remplacement à partir de la phrase.

1
Jacob Jan Tuinstra