首页 > 解决方案 > 如何从 Google 表格的下拉列表中获取数据?

问题描述

我正在尝试将下拉列表的所有选项连续转换,但我找不到方法。

假设下拉菜单有简单的选项 1 2 3 4

我需要将所有值提取到一行。可以转置为行,单个单元格,连接,没关系。我只需要提取这些值。

标签: google-apps-scriptgoogle-sheets

解决方案


我相信你的目标如下。

  • 您要检索单元格中下拉列表的值,并将值放在行方向上。

在这个答案中,我想提出一个使用 Google Apps 脚本的自定义函数。

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的容器绑定脚本的脚本编辑器中。请放到=SAMPLE("A1")一个牢房里。这样,脚本将作为自定义函数运行。并且下拉列表的值被放到行中。

function SAMPLE(range) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataValudations = sheet.getRange(range).getDataValidations();
  return dataValudations.reduce((ar, r) => {
    r.forEach(c => {
      if (c) {
        const temp = c.getCriteriaValues()[0];
        if (c.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST) {
          ar = ar.concat(temp.map(e => [e]));
        } else if (c.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.VALUE_IN_RANGE) {
          ar = ar.concat(temp.getValues().flat().map(e => [e]));
        } else {
          ar.push([""]);
        }
      } else {
        ar.push([""]);
      }
    });
    return ar;
  }, []);
}

结果:

当单元格“A1”具有值为 的下拉列表时1,2,3,4,上述脚本返回以下结果。

在此处输入图像描述

  • 如果要将值放在列方向,请使用以下脚本。

      function SAMPLE(range) {
        const sheet = SpreadsheetApp.getActiveSheet();
        const dataValudations = sheet.getRange(range).getDataValidations();
        return dataValudations.reduce((ar, r) => {
          r.forEach(c => {
            if (c) {
              const temp = c.getCriteriaValues()[0];
              if (c.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST) {
                // ar = ar.concat(temp.map(e => [e]));
                ar.push(temp);
              } else if (c.getCriteriaType() == SpreadsheetApp.DataValidationCriteria.VALUE_IN_RANGE) {
                // ar = ar.concat(temp.getValues().flat().map(e => [e]));
                ar.push(temp.getValues().flat());
              } else {
                ar.push([""]);
              }
            } else {
              ar.push([""]);
            }
          });
          return ar;
        }, []);
      }
    
    • 结果

      在此处输入图像描述

参考:


推荐阅读