Google apps script 在GoogleDocs电子表格中,如何索引到regextract返回的数组中

Google apps script 在GoogleDocs电子表格中,如何索引到regextract返回的数组中,google-apps-script,google-docs,google-sheets,Google Apps Script,Google Docs,Google Sheets,我试图索引到regextract的结果中,以提取作为路径的文本字符串的特定部分。如何访问特定的匹配项 A1 A2 ------------------------------------ ----------- =REGEXEXTRACT($B$2,"/[A-Za-z_-]+/") /a/b/c/d.txt A1 A2 -----------------------------

我试图索引到regextract的结果中,以提取作为路径的文本字符串的特定部分。如何访问特定的匹配项

A1 A2 ------------------------------------ ----------- =REGEXEXTRACT($B$2,"/[A-Za-z_-]+/") /a/b/c/d.txt A1 A2 ------------------------------------ ----------- =REGEXEXTRACT($B$2,“/[A-Za-z+/”)/A/B/c/d.txt
上面的公式将第一个数组值“/a/”放入单元格A1,如何访问数组中的第四个或最后一个值?

如果您坚持使用
REGEXTRACT()
来分解路径,您可能会发现以下资源很有帮助:

  • (其结论是“不要使用javascript”…因此我从一个示例中提升代码开始!)
  • 。。。还有更多
然而,在Google电子表格中,访问路径和文件名字符串特定部分的最有效方法是在嵌入式脚本中使用自定义函数。我假设你熟悉应用程序脚本编程;看

下面的代码包含两个脚本,一个构建在另一个之上。例如,调用
pathExtract()
将返回给定路径字符串的指定段

/**
 * Split path into parts, return in array. If path started
 * at 'root', first part will be "/". This function may be used
 * as a custom function in Google Spreadsheets.
 *
 * @var {string} path   The search path, e.g. "/a/b/c/d.txt"
 * @return {array}      Result of splitting path at "/". 
 */
function pathSplit( path ) {
  var arr = path.split('/');
  if (path[0] === "/") {
    arr[0] = "/";
  }
  return ( arr );
}

/*
 * Get a portion of a path string. To match INDEX() function,
 * the parameter index is 1-based. Requesting index 0 will
 * result in the last element from the string. This function
 * may be used as a custom function in Google Spreadsheets.
 *
 * @var {string} path   The search path, e.g. "/a/b/c/d.txt".
 * @var {number} index  1-n, the element to extract. 0 for last.
 * @return {string}     Element [index] from path, or *ERROR*.
 */
function pathExtract( path, index ) {
  var result = "*ERROR*";
  var pathArray = pathSplit( path );
  if (index >= 1 && index <= pathArray.length) {
    result = pathArray[index-1];
  }
  if (index === 0) {
    result = pathArray[pathArray.length-1];
  }

  return ( result );
}
/**
*将路径拆分为多个部分,以数组形式返回。如果路径已启动
*在“根”处,第一部分为“/”。可以使用此功能
*作为谷歌电子表格中的自定义功能。
*
*@var{string}path搜索路径,例如“/a/b/c/d.txt”
*@return{array}在“/”处拆分路径的结果。
*/
函数路径拆分(路径){
var arr=path.split('/');
如果(路径[0]=“/”){
arr[0]=“/”;
}
返回(arr);
}
/*
*获取路径字符串的一部分。要匹配INDEX()函数,
*参数索引是基于1的。请求索引0将被删除
*结果是字符串中的最后一个元素。此函数
*可以在Google电子表格中用作自定义函数。
*
*@var{string}path搜索路径,例如“/a/b/c/d.txt”。
*@var{number}索引1-n,要提取的元素。最后是0。
*@return{string}元素[index]来自路径,或*ERROR*。
*/
函数pathExtract(路径、索引){
var result=“*错误*”;
var pathArray=pathSplit(路径);
如果(索引>=1&&index