莲花笔记中按钮的公式

时间:2013-10-31 12:27:36

标签: lotus-notes lotus-formula

我在电子邮件中添加了一个按钮。

单击该按钮,将运行以下公式:

@If(disablebutton="1"; 
    @Return(@Prompt([Ok];"";"Thank you but you have already clicked once! :) "));
    @Prompt([Ok];"";"Thank you for the click! :) "));
@MailSend( "abc@xyz.com"; ""; "" ; "I will be present at the event!" ; 
            "" ; "" ; [PriorityNormal] );
FIELD disablebutton:="1";

以上公式基本上执行以下操作:

if(disableButton is 1){
       Open prompt : you have already clicked and return without executing anything ahead
}else{
       Open prompt : Thank you for the click!
}

send email to the specified email address with specified subject

set disableButton = 1

因此,当接收者打开电子邮件时,上述公式限制接收者只需点击一次按钮,结果只有一封邮件被发送到指定的电子邮件地址。

然而,问题是,如果用户关闭邮件并再次打开,则从头开始运行相同的公式,这有效地允许接收者再次发送邮件。

通过关闭并打开邮件并重新点击按钮,他可以有效地将多封邮件发送到指定的电子邮件地址。

如何处理?我希望disableButton的值永久保留,以便邮件只发送一次。

2 个答案:

答案 0 :(得分:3)

将以下几行放在公式的末尾:

@If(@IsDocBeingEdited;
    @PostedCommand([FileSave]);
    @Do(    @PostedCommand([EditDocument]);
            @PostedCommand([FileSave]);
            @PostedCommand([EditDocument])))

只有当文档处于编辑模式并且保存时,字段设置才会保留在文档中。通常,当用户阅读他们的电子邮件时,电子邮件处于阅读模式。使用@Command([EditDocument]);,您可以在读取和编辑模式之间切换。

如果电子邮件处于编辑模式,我们只需要保存文档。

如果电子邮件处于读取模式,我们将文档更改为编辑模式,保存文档并将其设置回读取模式。

答案 1 :(得分:0)

尝试在LotusScript中实现相同的功能。调试更容易 - 那里。

dim uiws as new notesuiworkspace
dim uidoc as notesuidocument
dim disablebutton as string
dim doc as notesdocuemnt
set uidoc = uiws.currentDocument
disablebutton = uidoc.fieldgettext("DisableButton")
if(strcompare(disablebutton,"1",5)=0 then
messagebox {Thank you but you have already clicked once! :)}
else
call sendMail(uidoc.document)
set doc =uidoc.document
call doc.replaceitemvalue("DisableButton","1")
call doc.save(true,false)
call uidoc.close()
end if

还需要实现SendMail功能。