Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用Google Sheet公式验证电话号码的特定格式_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用Google Sheet公式验证电话号码的特定格式

Google apps script 使用Google Sheet公式验证电话号码的特定格式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在使用google sheets,希望将美国电话号码转换为以下格式: 1xxxyyyzzzz eg 402-333-4444应改为14023334444 我有一个应用程序脚本验证程序功能,可以执行以下操作: var numbers = 'INVALID' if ( parsed_body.hasOwnProperty('PHONE') ) { var phone = parsed_body['PHONE'].toString(); Logger.log(parsed_bod

我正在使用google sheets,希望将美国电话号码转换为以下格式:

1xxxyyyzzzz
eg 402-333-4444应改为14023334444

我有一个应用程序脚本验证程序功能,可以执行以下操作:

var numbers = 'INVALID' 

if ( parsed_body.hasOwnProperty('PHONE') ) {


  var phone = parsed_body['PHONE'].toString();
  Logger.log(parsed_body);

  numbers = phone.replace(/[^0-9]/g, "");
  var firstChar = numbers.charAt(0);
  if ( firstChar !== '1'){ numbers = '1'+ numbers}
  Logger.log(numbers);

  if ( numbers.length !== 11){ numbers = 'NOTELEVEN'};
}

parsed_body['PHONE']=numbers;

但是我想让床单做这个。这可能吗?

如果在一个公式中执行,则会产生相当长的公式,因为您必须不断重复前面的步骤,这与脚本版本不同:

=if(len(if(left(regexreplace(""&D2,"[^0-9]",""))="1","","1")&regexreplace(""&D2,"[^0-9]",""))=11,
if(left(regexreplace(""&D2,"[^0-9]",""))="1","","1")&regexreplace(""&D2,"[^0-9]",""),"INVALID")
可以更改为数组公式:

=ArrayFormula(if(D2:D="","",if(len(if(left(regexreplace(""&D2:D,"[^0-9]",""))="1","","1")&regexreplace(""&D2:D,"[^0-9]",""))=11,
if(left(regexreplace(""&D2:D,"[^0-9]",""))="1","","1")&regexreplace(""&D2:D,"[^0-9]",""),"INVALID")))

是的,您可以使用regexreplace、left和len轻松地将其重新编写为一个表单公式。很抱歉延迟,汤姆-谢谢!跟进问题: