【问题标题】:Google Sheets Script WildcardsGoogle 表格脚本通配符
【发布时间】:2016-12-18 10:50:24
【问题描述】:

我知道我可以在公式中使用通配符;

=COUNTIF(A:A ; "*text*")

如果 A1 包含“文本”,我想运行我的代码。

A1 = "测试文本"

谁能帮帮我?

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-api


    【解决方案1】:

    对于 Google Apps 脚本,您可以使用正则表达式。如果您在应用程序脚本中对其进行硬编码,则任何被正斜杠包围的语句都会被解释为正则表达式:

    /.*text.*/

    请注意,RegExps 中通配符的使用略有不同:您需要在星号 * 之前包含一个点 .
    COUNTIF():*text*
    正则表达式:/.*text.*/

    所以一个快速脚本应该是这样的:

    function matchText(text){
        try {
            var pattern = /.*text.*/;
            var isMatch = text.match(pattern)[0];
            return isMatch
        } catch (e) {
        return e.toString();
      }
    };
    

    一个通用的自定义函数:

    function matchText(text,pattern){
        try {
            var isMatch = text.match(pattern)[0];
            return isMatch
        } catch (e) {
        return e.toString();
      }
    };
    

    您仍然可以使用 regexextract 或 regexmatch 使用本机公式来执行此操作,这一直是我的最爱。请记住使用正确的正则表达式通配符符号:星号前的点:.*。或者只使用 text 本身,它会自动找到它的任何实例:

    【讨论】:

    • (术语 nitpick:“如果您在应用程序脚本中对其进行硬编码,则任何被正斜杠包围的 statement 都会被解释为正则表达式:@987654333 @" ↦ 我认为您的意思是 表达式。(表达式构成语句的一部分。))
    【解决方案2】:
    =IF(COUNTIF(A1, "*text*"), "your code here", "Code not run: A1 doesn't contain 'text'")
    

    这是您想到的 - 公式代码吗?还是要使用Google Apps Script

    (可能有一个比 COUNTIF() 更直观的命名函数,但它可以解决问题。)

    【讨论】:

    • 我想使用 Google Apps 脚本。
    【解决方案3】:

    我的解决方案:

     if(test.indexOf("2,")>-1)
    {
        my code goes here
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多