如何在Google脚本编辑器中截取字符串前10位用于比较?
扫描值与零件号前10位匹配解决方案
问题说明
工作中使用Google Apps Script处理扫描值:扫描值为12位(如1234567890AB),需取其前10位与单元格获取的零件号比较。现有脚本其余功能正常,但不知如何实现前10位的匹配校验。
解决思路
直接利用JavaScript字符串的substring()方法截取前10位字符,再进行比较。如果零件号也可能存在长度不一致的情况,建议同时截取零件号的前10位,确保对比的一致性。
修改后的完整代码
var ss = SpreadsheetApp.getActiveSpreadsheet(); var userForm = ss.getSheetByName('T Line'); var partNumber = userForm.getRange(10,29).getValue().toString(); // 转为字符串确保可截取 var quantity = userForm.getRange(10, 6).getValue(); var check = 0; var orderManifest = ss.getSheetByName('Order Manifest'); var ui = SpreadsheetApp.getUi(); // 提前声明UI对象,避免重复创建 do { while (check < quantity) { // 修正循环逻辑,实现逐次扫描校验 var scannedData = ui.prompt("Scan Part Number QR Code"); var text = scannedData.getResponseText().toString(); // 截取前10位进行比较 var scannedPrefix = text.substring(0, 10); var partNumPrefix = partNumber.substring(0, 10); if(scannedPrefix === partNumPrefix){ Logger.log(text); ui.alert("QR Code matches part number.", ui.ButtonSet.OK); check++; } else { Logger.log(text); ui.alert("QR Code does NOT match", ui.ButtonSet.OK); ui.alert("Please verify the correct part number is selected and try again.", ui.ButtonSet.OK); } } } while (false); // 修正do-while语法缺失问题
关键修改点
- 使用
substring(0, 10)分别截取扫描值和零件号的前10位,聚焦目标校验部分 - 给单元格获取的值添加
.toString(),避免数值类型无法调用字符串方法的问题 - 调整循环逻辑,让脚本能逐次扫描并计数,匹配原需求中“按数量扫描”的逻辑
- 统一使用
ui.alert替代Browser.msgBox,保持API调用一致性
内容的提问来源于stack exchange,提问作者FortisQ
相关产品推荐
相关产品推荐

