【问题标题】:Google Scripts / Sheets Add prefix to data once it has been entered into the cellGoogle Scripts / Sheets 在数据输入单元格后添加前缀
【发布时间】:2020-11-20 14:13:08
【问题描述】:

目标

  1. 将 CSC1[Leading Zeros] 前缀添加到 1291、12922 或 129223 等数字中,这应该适用于整个列(F 列)
  2. 使用零填充确保总字符串长度 = 15,因此单元格值为 CSC100000001291
  3. 用户只会输入 1291,但我打算让脚本覆盖它以使单元格值 CSC100000001291

可以使用公式但跨两列完成,但更喜欢使用一列,因为它看起来更整洁。

例如 [用户输入] = [最终单元格值]

 - 1291 = CSC100000001291
 - 12922 = CSC100000012922

目前正在尝试解决这个问题

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    使用以下内容:

    • onEdit trigger 用于检查某人何时更新了单元格
    • padStart() 添加前导零
    • replace() 前 4 个零带有“CSC1”(因为如果传递的是字符串而不是正则表达式,则只会替换第一个出现的位置)
    • setValue() 更新已编辑的单元格
    function onEdit(e) {
      if (e.range.columnStart == 1) { // Column A
        const padded = e.value.padStart(15, 0);
        e.range.setValue(padded.replace('0000', 'CSC1'));
      }
    }
    

    【讨论】:

    • 可以确认这正是所需要的,只需将第 2 行调整到我的相关列。
    • 我的理解是你将单元格设置为15x零,然后将前4位数字替换为CSC1,但是用户输入从哪里来?
    • @unstacked55 我不确定我明白你为什么这么问。从您的问题标题“一旦将其输入单元格”,用户输入来自用户编辑单元格。请帮助我理解我在这里的误解。
    • 嗨 Diego,是的,我正在尝试更多地理解代码。代码的哪一部分引用了用户输入?
    • @unstacked55 用户输入是e.value。查看event object 文档,其中描述了e 被传递到onEdit(e)
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2018-08-07
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多