【问题标题】:iMacros if/else statement how to?iMacros if/else 语句如何?
【发布时间】:2025-07-24 01:40:01
【问题描述】:

我正在尝试从网页中提取一些数据。我遇到了在某些情况下出现的额外数据行的问题。

这是我的代码块:

VERSION BUILD=10.4.28.1074
TAB T=1
TAG POS=114 TYPE=TR ATTR=* EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=115 TYPE=TR ATTR=* EXTRACT=TXT
SET !VAR2 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=116 TYPE=TR ATTR=* EXTRACT=TXT
ADD !EXTRACT {{!VAR1}}
ADD !EXTRACT {{!VAR2}}
SAVEAS TYPE=EXTRACT FOLDER=\\admin\Documents\iMacros FILE=extracttest2.csv

你会注意到这段代码有标签 pos 114,115 和 116。但是,有时我只需要提取 114 和 115。

POS 114 以“所有者:”或“所有者:”开头。如果是“Owner:”,那么我只需要提取114和115。如果是“Owners:”,我需要提取114、115和116。

有没有办法制作 if/else 语句或其他类型的规则,如果 114 包含单词“Owner”,则只会提取 POS 114 和 115。如果 114 包含单词“Owners” POS 114、115 和 116 会被提取吗?

提前感谢您的任何建议。

【问题讨论】:

    标签: imacros


    【解决方案1】:

    这是未应用脚本接口的变体之一。而不是 TAG POS=116 TYPE=TR ATTR=* EXTRACT=TXT 行添加这个块:

    SET pos116 EVAL("('{{!VAR1}}'.match(/Owners:/)) ? 116 : 99999;")
    SET !ERRORIGNORE YES
    SET !TIMEOUT_STEP 0
    TAG POS={{pos116}} TYPE=TR ATTR=* EXTRACT=TXT
    SET !ERRORIGNORE NO
    SET !TIMEOUT_STEP 6
    SET !EXTRACT EVAL("('{{!EXTRACT}}' == '#EANF#') ? '' : '{{!EXTRACT}}';")
    

    注意:我想网页上没有带有 TAG POS=99999 TYPE=TR ATTR=* 的元素。

    【讨论】:

      【解决方案2】:

      使用EVAL 命令尝试类似的操作,这样您就可以使用if/else 条件:

      SET NEWVAR EVAL("var s=\"{{!VAR1}}\"; if(!s.match(/owners/g)) {s=\"!VAR1\";} else {s=\"!VAR2\";")
      

      iMacros wiki了解更多信息

      【讨论】: