在 Google Apps 脚本中的自定义函数中添加前导零
Add leading zeroes in custom function in Google Apps Script
我想创建一个与 Text(A1,"0000000") 功能相同的自定义函数,但我必须在 Google Apps 脚本中执行此操作,因为它将合并到更复杂的自定义功能。谁能告诉我正确的方法?
这是我一直在尝试的,以及一些衍生的东西:
`/**
* Sets custom format as "0000000"
*
* @param {number} input The value to format.
* @return The input set to the new custom format
* @customfunction
*/
function to_16ths(input) {
var n = input.setNumberFormat("0000000");
return n;
}
我想出了一个可能会解决您的问题的代码。请看下面:
function myFunction() {
sheet = SpreadsheetApp.getActiveSheet().getRange(1,1)
sheet.setNumberFormat('000000')
sheet.setValue('1')
}
它的作用非常简单。它设置单元格 A1 的数字格式,每次您在该单元格中输入一个值时,它将具有此代码为该单元格设置的格式。请看下面的结果:
我尝试使用 setNumberFormat()
创建自定义函数,但在 Sheet 上出现错误“您无权调用 setNumberFormat” . 根据这个 .
的回答,我能够确认 setNumberFormat()
需要用户授权请求,并且不可能在自定义函数中使用
因此,我手动创建了一个代码,如果输入数字长度大于 2,则将任何输入数字格式化为“0000000”,如果输入数字长度介于 1 或 2 之间,则将任何输入数字格式化为“000”。您可以参考以下代码:
已更新
function to_16ths(input) {
var n = input;//gets the number from cell range
var format = 0;
var length = n.toString().length;
var result = "";
if(length<=2 && length>0){//if input number length is 1 or 2
format = 3;//formats number to 000
var z = format - length;
for(var x = 0; x < z; x++){
result = result + "0";
}
return result+n.toString();
}else if(length>2){//if input number length is more than 2
format = 7;//formats number to 0000000
var z = format - length;
for(var x = 0; x < z; x++){
result = result + "0";
}
return result+n.toString();
}else{
return "Empty cell detected!";//Shows a message when there's no number input
}
}
当您输入长度为 1 的数字时,自定义函数的结果将采用“000”格式,如下所示:
如果您输入的长度大于 2,则结果结果将采用“0000000”格式,如下所示:
我想创建一个与 Text(A1,"0000000") 功能相同的自定义函数,但我必须在 Google Apps 脚本中执行此操作,因为它将合并到更复杂的自定义功能。谁能告诉我正确的方法? 这是我一直在尝试的,以及一些衍生的东西:
`/**
* Sets custom format as "0000000"
*
* @param {number} input The value to format.
* @return The input set to the new custom format
* @customfunction
*/
function to_16ths(input) {
var n = input.setNumberFormat("0000000");
return n;
}
我想出了一个可能会解决您的问题的代码。请看下面:
function myFunction() {
sheet = SpreadsheetApp.getActiveSheet().getRange(1,1)
sheet.setNumberFormat('000000')
sheet.setValue('1')
}
它的作用非常简单。它设置单元格 A1 的数字格式,每次您在该单元格中输入一个值时,它将具有此代码为该单元格设置的格式。请看下面的结果:
我尝试使用 setNumberFormat()
创建自定义函数,但在 Sheet 上出现错误“您无权调用 setNumberFormat” . 根据这个
setNumberFormat()
需要用户授权请求,并且不可能在自定义函数中使用
因此,我手动创建了一个代码,如果输入数字长度大于 2,则将任何输入数字格式化为“0000000”,如果输入数字长度介于 1 或 2 之间,则将任何输入数字格式化为“000”。您可以参考以下代码:
已更新
function to_16ths(input) {
var n = input;//gets the number from cell range
var format = 0;
var length = n.toString().length;
var result = "";
if(length<=2 && length>0){//if input number length is 1 or 2
format = 3;//formats number to 000
var z = format - length;
for(var x = 0; x < z; x++){
result = result + "0";
}
return result+n.toString();
}else if(length>2){//if input number length is more than 2
format = 7;//formats number to 0000000
var z = format - length;
for(var x = 0; x < z; x++){
result = result + "0";
}
return result+n.toString();
}else{
return "Empty cell detected!";//Shows a message when there's no number input
}
}
当您输入长度为 1 的数字时,自定义函数的结果将采用“000”格式,如下所示:
如果您输入的长度大于 2,则结果结果将采用“0000000”格式,如下所示: