2016-11-21 13 views
0

Ich habe versucht, an der Ersetzung von Text in einem Google-Skript zu arbeiten, aber es produziert nicht, was ich möchte. Zur Zeit benutze ich Cameron Roberts Skript von hier - How do I replace text in a spreadsheet with Google Apps Script? um meine Nachfolger zu machen, aber ich habe es nicht ganz richtig verstanden.replaceText-Platzhalter in Google Sheet-Skript

Mit diesem Code versuche ich das Wort 'Werte' durch '1 zu ersetzen. Werte 'aber wenn ich den Code mehrmals ausführen, produziert es' 1. 1. Werte 'etc, da es nur die Zeichenfolge' Werte 'findet. Was ich möchte, ist eine Wildcard, die nur nach 'Werte' sucht und dann '1. Werte 'in, aber ich kann nicht scheinen, die Syntax des regulären Ausdrucks gut genug zu erfassen, um es zu beheben.

function testReplaceInSheet(){ 
    var sheet = SpreadsheetApp.getActiveSheet() 
    replaceInSheet(sheet,'values','1. values'); 
} 

function replaceInSheet(sheet, to_replace, replace_with) { 
    //get the current data range values as an array 
    var values = sheet.getDataRange().getValues(); 

    //loop over the rows in the array 
    for(var row in values){ 

    //use Array.map to execute a replace call on each of the cells in the row. 
    var replaced_values = values[row].map(function(original_value){ 
     return original_value.toString().replace(to_replace,replace_with); 
    }); 

    //replace the original row values with the replaced values 
    values[row] = replaced_values; 
    } 

    //write the updated values to the sheet 
    sheet.getDataRange().setValues(values); 
} 
+0

gut geht, '1. values ​​'enthält' values' also braucht man '1. 'das wird' 1 sein. 1. Werte ". Was willst du, dass es passiert? Nichts tun? –

+0

Danke für die Antwort. Ich möchte "Werte" durch "1" ersetzen. Werte "aber jedes Mal, wenn das läuft, wie du sagst, bekomme ich eine zusätzliche" 1. 'Präfix.Ich denke, was ich möchte, ist die ganze Zeichenfolge, die' Werte 'enthält ersetzt werden, um nur' 1 zu zeigen. Werte'. – davey4444

Antwort

0

Wenn eine kleine Änderung der Formatierung für Sie akzeptabel ist, dann können Sie eine der ‚Werte‘ Kapital zu schlagen, ex:

replaceInSheet(sheet,'values','1. Values'); 
+0

Natürlich! Danke dafür, es sollte perfekt funktionieren. – davey4444

0

Dies fügt ein Präfix, wenn das Präfix nicht bereits vorhanden ist. Simuliert ein negatives Aussehen hinter dem ist, warum die Umkehr

function addPrefix(s, find, prefix) { 
    function reverse(x) {return x.split("").reverse().join("");} 

    var sr = reverse(s); 
    var findr = reverse(find); 
    var prefixr = reverse(prefix); 
    var findRegexpr = new RegExp(findr + "(?!" + prefixr + ")"); 

    return reverse(sr.replace(findRegexpr, findr + prefixr)) 
}