2017-04-05 3 views
4

Ich arbeite an einem Datenkonvertierungsskript für einige Wahlen, die wir tun. Der erste Teil ändert alle Namen in Großbuchstaben, und dieser Teil des Skripts funktioniert einwandfrei. Ich habe jedoch ein Problem mit dem zweiten Teil des Skripts. Einige IDs haben ein S, S123456, und einige haben kein S, 123456. Für meine Zwecke brauche ich alle IDs, die am Anfang kein s haben. Wenn ich dieses Skript in Google ausführe, gibt es "TypeError: Kann die Funktion startsWith im Objekt S123456 nicht finden." Irgendwelche Ideen? Vielen Dank!!Zeichenfolge beginnt mit in Google Script

function convertResponseData(){ 
 
    var resultsInformation = SpreadsheetApp.openById('MySheetID').getSheetByName('Election Responses'); 
 
    var resultsDataRange = resultsInformation.getRange(1, 1, 2500, 6); 
 
    var resultsData = resultsDataRange.getValues(); 
 
    for (var i = 0; i < resultsData.length; i++) { 
 
    var row = resultsData[i]; 
 
    var resultsStudentNameLower = row[1]; 
 
    var resultsStudentID = row[2] 
 
    var studentNameUpper = resultsStudentNameLower.toUpperCase() 
 
    resultsInformation.getRange(i+1, 2).setValue(studentNameUpper) 
 
    if (var n = resultsStudentID.startsWith("S")){ 
 
     var resultsStudentIDNoS = resultsStudentID.substring(1,20); 
 
     resultsInformation.getRange(i+1, 3).setValue(resultsStudentIDNoS) 
 
    } 
 
    } 
 
}

+0

'hilft nicht funktionieren kann startsWith' finden - welche Browser Sie verwenden? Und, ist 'resultsStudentID' immer eine Zeichenkette? vielleicht musst du das überprüfen wie 'if (resultsStudentID.startsWith && resultsStudentID.startsWith ("S")) {'- du kannst auch' var n = 'entfernen, da du nie den Wert –

+0

alternativ' if (resultsStudentID .toString(). startsWith ("S")) {'- solange Ihr Browser kein Internet Explorer ist. –

+0

Ich benutze Google Chrome und habe versucht' if (resultsStudentID.toString(). startsWith ("S")) {'und es gab mir den gleichen Fehler. @ JaromandaX –

Antwort

7

startsWith() wird in Google-Skripten nicht unterstützt. Stattdessen können Sie

resultsStudentID.indexOf("S") == 0 

Um zu überprüfen, verwenden, wenn die Zeichenfolge Start beginnt mit "S"

function convertResponseData(){ 
    var resultsInformation = SpreadsheetApp.openById('MySheetID').getSheetByName('Election Responses'); 
    var resultsDataRange = resultsInformation.getRange(1, 1, 2500, 6); 
    var resultsData = resultsDataRange.getValues(); 
    for (var i = 0; i < resultsData.length; i++) { 
    var row = resultsData[i]; 
    var resultsStudentNameLower = row[1]; 
    var resultsStudentID = row[2] 
    var studentNameUpper = resultsStudentNameLower.toUpperCase() 
    resultsInformation.getRange(i+1, 2).setValue(studentNameUpper) 
    if (resultsStudentID.indexOf("S") == 0){ 
     var resultsStudentIDNoS = resultsStudentID.substring(1,20); //You also do this resultsStudentID.substring(1) to get a substring from index 1 to end. 
     resultsInformation.getRange(i+1, 3).setValue(resultsStudentIDNoS) 
    } 
    } 
} 

Hoffnung, die

+1

Dies ist die richtige Antwort. Scheint, dass der Autor der Frage dieses Thema vergessen hat, aber dies sollte als die gültige Lösung für dieses Problem markiert werden –