我正在为我们正在进行的一些选举制作数据转换脚本。第一部分将所有名称更改为大写,并且脚本的这部分工作正常。但是,我的脚本的第二部分有问题。有些ID会有S,S123456,有些则没有S,123456。出于我的目的,我需要所有ID在开头没有s。当我在Google中运行此脚本时,它返回" TypeError:在对象S123456中找不到函数startsWith。"有任何想法吗?谢谢!
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)
}
}
}
&#13;
答案 0 :(得分:21)
startsWith()
。相反,您可以使用
resultsStudentID.indexOf("S") == 0
检查字符串start是否以“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)
}
}
}
希望有所帮助
答案 1 :(得分:0)
借助V8 Runtime ,您现在可以使用现代ECMAScript语法。
您可以使用startsWith():
function myFunction() {
let str = 'Something';
console.log(str.startsWith("S")); // returns true
}