在 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”格式,如下所示: