You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:06:12