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

如何用AppsScript检查Google Sheets表单缺失字段并提示用户

Google Sheet RIS表单提交前的数量字段验证实现

需求背景

已通过Google Sheet构建RIS请求表单,使用AppsScript将表单转为PDF发送给指定收件人。需添加提交前验证:当用户在描述列选择项目(库存编号和单位会自动填充),每个选中的项目必须填写数量才能提交;若存在缺失字段,触发提示并终止提交流程。

修改后的完整代码

function showAlert() {
  var ui = SpreadsheetApp.getUi();
  var sh = SpreadsheetApp.getActive().getSheetByName('RIS Form');

  try {
    // 先执行数量字段验证,不通过则直接提示并终止
    if (!validateQuantityFields(sh)) {
      ui.alert("请为所有已选择的项目填写有效数量!");
      return;
    }

    var result = ui.prompt(
      'Submit request?',
      'Enter recipient\'s email address:',
      ui.ButtonSet.YES_NO);

    var button = result.getSelectedButton();
    var email = result.getResponseText();

    var message = {
      to: email,
      subject: "Request and Issuance Slip",
      body: "New request! Please see attached file.",
      name: "RIS Alert",
      attachments: [SpreadsheetApp.getActiveSpreadsheet().getAs(MimeType.PDF).setName("Request Form")]
    }

    if (button == ui.Button.YES) {
      transfer();
      hideAllSheetsExcept('RIS Form');
      MailApp.sendEmail(message);
      ui.alert("Your request has been sent");
    }
  } catch(e) {
    ui.alert(e.toString());
  }
}

// 验证函数:检查所有已选项目的数量字段是否完整
function validateQuantityFields(sheet) {
  // 请根据你的表格实际结构修改范围参数:getRange(起始行, 起始列, 数据行数, 列数)
  // 示例:描述列在C列(第3列),数量列在E列(第5列),数据行从第8行到第49行
  var dataRange = sheet.getRange(8, 3, 42, 3);
  var dataValues = dataRange.getValues();

  for (var row of dataValues) {
    var hasDescription = row[0]; // 描述列的值
    var quantity = row[2]; // 数量列的值

    // 规则:有描述的项目必须填写数量,且数量大于0
    if (hasDescription && (!quantity || quantity <= 0)) {
      return false;
    }
  }
  return true;
}

关键说明

  1. 验证时机:将验证逻辑放在收件人弹窗之前,确保用户先完成必填项再进入提交流程
  2. 范围自定义:务必根据你的表格实际行列结构,修改validateQuantityFields中的getRange参数,匹配描述列和数量列的位置
  3. 规则调整:当前验证规则为「有描述的项目必须填写大于0的数量」,可根据需求修改(比如允许数量为0则去掉quantity <=0)
  4. 语法修复:修正了原代码中'Enter recipient's email address:'的单引号嵌套错误,改为'Enter recipient\'s email address:'避免运行报错

内容的提问来源于stack exchange,提问作者MMJJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:47:34