如何在编辑模式下从文档中复制特定文本并将其添加到主题行?

时间:2011-10-13 20:21:25

标签: lotus-notes lotusscript lotus-formula

我远非专家,但我最近学到了很多关于使用Lotus @Formula语言的知识,并为自己创建了一些非常有用的按钮。不幸的是,我很难尝试对我最近创建的那个进行点睛之笔,无论我做多少搜索,我都无法找到任何指向正确方向的东西。

更具体地说,我正在尝试做的是转发一条注释,该注释从电子邮件正文中获取一段文本并在主题行中使用它。我转发的注释可以是备忘录或来自特定数据库的文档。当我从数据库转发文档时,我可以通过使用 @GetField 转发特定字段的值来获取我需要的文本。如果我只是直接从数据库中的文档转发,它首先获取值是完美的,这很好,因为一旦我打开新的备忘录转发它,那个字段就不再存在了。

问题在于,如果我转发其他人的电子邮件(已经从数据库转发文档的人),我没有机会首先获得我需要的值,因为该字段已经消失。好消息是我想要获得的字段的价值列在我要转发的备忘录的表格中。不幸的是,我无法弄清楚如何突出显示和复制该文本,以便我可以将其粘贴在主题行中。在我简单的思想中,我想我只需要一种方法来“找到”我需要复制的文本之前的静态文本,向右移动一个空格,然后突出显示并复制从该点到结尾的所有内容。细胞

基本上,我需要一种方法来从身体中查找和复制某些内容,以便我可以在主题行中使用它。我最接近的工作是使用 EditDown EditRight 命令将光标移动到现场。该方法的问题在于我无法知道向下移动的正确行数。如果我转发原始文档,可以使用以下类型的作品:

@Command( [EditGotoField]; "Body" ) ;
REM "The next line only works if the text is located exactly 33 lines down." ;
@Command( [EditDown]; "33" ) ;
@Command( [EditRight]; "29" ) ;
@Command( [EditDeselectAll] ) ;
REM "The next line only works if the text I need is three characters long." ;
@Command( [EditRight] ; "3" ) ;
@Command( [EditCopy] ) ;
@Command( [EditGotoField] ; "Subject" ) ;
@Command( [EditSelectAll]) ;
@Command( [EditInsertText] ; "The text I need is: " ) ;
@PostedCommand( [EditPaste] ) 

我说“有点”因为它选择文本的部分仅在我需要的文本恰好与我在代码中指定的字符数相同时起作用。如果我需要的文字更长,那就不会全部了。如果它更短,光标选择下一个单元格,然后复制一堆不必要的文本。我需要一种方法让它只选择到单元格的末尾(即好像点击'Shift'+'End')。

我想也许我可以调用代理来执行这个部分,但是我在搜索LotusScript时找不到任何有用的东西。

我还认为也许我转发的电子邮件可能会有一些链接回原始文档,但我找不到任何东西。我的想法是,也许它可以找到原始文件,获得我需要的价值并回到笔记。

感谢您花时间阅读本文。如果有人可以提供帮助,我真的很感激。

1 个答案:

答案 0 :(得分:1)

建议你看一下@Text或@Abstract从备忘录的正文字段中抓取文本,这将留下一个字符串来处理,你提到你在文本之前有一些静态文本你想要@middle可能是你的朋友。 HTH。

嗨Mike,@ Abstract将处​​理最大64994字节,这对于电子邮件应该足够了。您想要的字段实际上称为Body,因此请尝试

@Abstract([TextOnly]; 64000;“”;“Body”)

我尝试将此分配给变量只发现公式字符串变量限制为1700个字符,所以我直接在@ Middle使用它,

@ Middle(@Abstract([TextOnly]; 64000;“”;“Body”);“YourFixedText1”;“YourFixedText2”))

然后我将@Prompt包裹起来进行测试,

@Prompt([Ok];“Test Extract”; @Middle(@ Abstract([TextOnly]; 64000;“”;“Body”);“”YourFixedText1“”;“YourFixedText2”))

成功提取所需内容后,请使用公式设置转发备注的“主题”字段。