【问题标题】:iMacros - Exclude original extracted text from being saved in csviMacros - 排除原始提取的文本保存在 csv 中
【发布时间】:2017-09-06 05:05:20
【问题描述】:

我希望我是清楚的。我是个菜鸟。这也是我第一次在这里提问,所以我很抱歉错过了我应该提供的任何东西。

所以我想要实现的是使用 EVAL 在 csv 中保存/“拆分”提取字符串的某些部分。作为我想要实现的简化模型,这里是 iMacros 中一个演示的修改代码:

URL GOTO=http://www.iopus.com/imacros/demo/v6/extract2/       
TAG POS=1 TYPE=P ATTR=CLASS:heading&&TXT:* EXTRACT=TXT  
SET commandOnly EVAL("var s=\"{{!EXTRACT}}\"; s.split(' ')[2];")
ADD !EXTRACT {{commandOnly}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extract_{{!NOW:yyyy-mm-dd<SP>hhh<SP>nnmin}}.csv

如您所见,生成的 csv 文件将填充 2 列。我希望它在 A1 中只有一个带有“命令”一词的条目。是否可以在不提取的情况下将某些内容复制到剪贴板?因为也许那样,原始提取的文本不会反映在 csv 中。我将不胜感激任何解决方案或解决方法。谢谢!

【问题讨论】:

  • 运行这个确切的代码,我在我的 .csv 文件中得到了 Overview EXTRACT command,"EXTRACT",虽然都在字段 A1 中。你得到了什么?我对您的理解是否正确,您想要文件中的实际字面意思“COMMAND”? (请注意,它在网站上写成“命令”。)或者您的意思是只为该特定示例获取“提取”?另外,您使用 CLIPBOARD 的目的是什么,为什么要设置它?
  • @PinkiePie 是的,我注意到了这个错误,感谢您指出这一点:D 我解决了我的问题,尽管我不确定如何解决。我会在这里分享它们,希望我也可以对其他人有所帮助。所以,是的,我真正的意思是“命令”。我已通过将 [1] 替换为 [2] 来修复代码。是的,剪贴板部分没有意义,所以我也取消了它。感谢您花时间回答:)

标签: split eval extract clipboard imacros


【解决方案1】:

你的初始代码的问题是你在这里使用了 ADD

ADD !EXTRACT {{commandOnly}}

而不是 SET。在您的情况下,这所做的是将变量 commandOnly 中的值添加到 !EXTRACT 已经拥有的值中,而不是像 SET 那样覆盖它。

您只需将 ADD 更改为 SET 即可。

所以完整的代码是

URL GOTO=http://www.iopus.com/imacros/demo/v6/extract2/       
TAG POS=1 TYPE=P ATTR=CLASS:heading&&TXT:* EXTRACT=TXT  
SET commandOnly EVAL("var s=\"{{!EXTRACT}}\"; s.split(' ')[2];")
SET !EXTRACT {{commandOnly}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extract_{{!NOW:yyyy-mm-dd<SP>hhh<SP>nnmin}}.csv

有关 ADD http://wiki.imacros.net/ADD 和 SET http://wiki.imacros.net/set 的更多信息

【讨论】:

    【解决方案2】:

    警告:我不太懂电码。如果对社区有帮助,请随时纠正我的任何问题。谢谢!

    我通过使用 SET !EXTRACT NULL 解决了我的问题。我不太确定应该如何使用它们,但看起来我们必须在每个 EXTRACT 命令之间进行 NULL 提取。请注意,上面的示例只是一个简单的参考,并且我正在处理的实际宏具有许多提取的字符串,因此 SET !EXTRACT NULL 的定位是关键。我还确保我的 ADD !EXTRACT 命令尽可能接近 SAVEAS(在底部!)。这样做会阻止最初提取的字符串被填充到 csv 中 --- 如果您正在修改提取的字符串(即 EVAL 的替换、子字符串等),则特别有用

    这是上面有问题的代码的修复版本:

    URL GOTO=http://www.iopus.com/imacros/demo/v6/extract2/       
    TAG POS=1 TYPE=P ATTR=CLASS:heading&&TXT:* EXTRACT=TXT  
    SET commandOnly EVAL("var s=\"{{!EXTRACT}}\"; s.split(' ')[2];")
    SET !EXTRACT NULL
    ADD !EXTRACT {{commandOnly}}
    SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extract_{{!NOW:yyyy-mm-dd<SP>hhh<SP>nnmin}}.csv
    

    【讨论】:

    • 你可以避免将 !EXTRACT 设置为 NULL 如果你在之后立即写入一个新值,只需使用 SET :)
    • 感激不尽。实际上,我怎么能在这里做到这一点?除了我的赞成票似乎没有反映任何事实之外,哈哈:)
    • 支持/接受答案是去这里的方式 :) 支持需要 15 的声誉,但是,为了使滥用虚假帐户更加困难。stackoverflow.com/help/privileges/vote-up
    • :D 已注明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多