Stacked IFs Google Sheets Apps 脚本
Posted
技术标签:
【中文标题】Stacked IFs Google Sheets Apps 脚本【英文标题】:Stacked IFs Google Sheets Apps Script 【发布时间】:2021-03-13 16:42:01 【问题描述】:Google Apps 脚本的新手。有人可以告诉我在 Apps 脚本中编写堆叠的 IF。 我想创建一个自定义函数,以自定义英尺-英寸-十六进制格式计算总的十六分之一。 格式因字符串的长度而异。 1=1', 12=12',508 = 5 1/2", 1604 = 16 1/4", 等等...为了转换为英尺-英寸-16,我必须先计算总的 16 分之一。 任何帮助表示赞赏。
【问题讨论】:
到目前为止您做了哪些研究?你有正在处理的代码吗?您能否提供一份您正在处理的电子表格副本,不含敏感信息,清楚地表明预期的结果? 对不起,我的问题没有更清楚,但格式本身有点混乱。这是一个电子表格的链接,可以更好地解释事情。 docs.google.com/spreadsheets/d/… 【参考方案1】:您的问题有点难以理解,但我认为您的表格中的值表示为 1' 3 1/2"(1 英尺,3.5 英寸),您希望将其转换为 16 英寸单位。
下面的函数应该做你想做的:
function SIXTEENTHS(string)
var regex = /^\s*([0-9]*(?=\'))?\'?\s*([0-9]+(?![0-9]))?\s*([0-9]+\/[0-9]+)?\"?\s*$/;
var parsed = string.match(regex);
if (!parsed)
return 'Bad input';
var inches = (parsed[1] | 0) * 12; // Parse feet
inches += (parsed[2] | 0); // Parse inches
if (parsed[3])
inches += (parsed[3].split('/').reduce((a, b) => a/b)); // Parse fractions
return inches*16;
解析字符串有点棘手,但您可以在Regex 101 看到正则表达式的作用并对其进行测试。
【讨论】:
对不起,我的问题没有更清楚,但格式本身有点混乱。这是一个电子表格的链接,可以更好地解释事情。 docs.google.com/spreadsheets/d/… 我想先转换为 16 位的原因是这样我就可以用我的测量值进行计算,比如加法或乘法。 您使用的输入格式存在一些歧义。如何区分 5 英尺 8 英寸和 5 8/16 英寸?两者都将写为 508。可以轻松地调整该函数以返回所需的格式(或者您可以使用 QUOTIENT 和 MOD 函数在工作表中执行此操作)。但首先您需要输入数据的格式一致且明确。 5'8" 将被写为 50800,5-1/2"(或 5-8/16")将是 508。就像我说的,格式有点混乱,但它有效. 我更新了电子表格以阐明该功能的工作原理。 我在 Excel 中使用了几个帮助列,但我想摆脱它。以上是关于Stacked IFs Google Sheets Apps 脚本的主要内容,如果未能解决你的问题,请参考以下文章
使用Google Charts在Stacked Column Chart中显示Y轴
使用 Sheets API v4 Java 阅读整个 Google 电子表格