Lotus从浏览器注意到自动化

时间:2013-12-13 04:03:48

标签: javascript lotus-notes

我一直在尝试从浏览器界面自动化Lotus Notes邮件填充。

在参考Richard Schwartz的回答后,我使用Lotus.NotesSession类提出了这段代码。

function SendScriptMail() {
            var mToMail = document.getElementById('txtMailId').value
            var mSub = document.getElementById('txtSubject').value
            var mMsg = document.getElementById('txtContent').value
            var Password = "yyy"
alert("1");
            var MailFileServer = "xxx.com"
            var MailFile = "C:\Program Files\IBM\Lotus\Notes\mail\user.nsf"
alert("2")
            var Session;
            var Maildb;
            var UI;
            var NewMail;
            var From = "user@xxx.com"
            try {
alert("3")
                // Create the Activex object for NotesSession
                Session = new ActiveXObject("Lotus.NotesSession");
alert("4")
                if (Session == null) {
                    throw ("NoSession");
                } else {
                    Session.Initialize(Password);
                    // Get mail database
                    Maildb = Session.GetDatabase(MailFileServer, MailFile);
alert("5")
                    if (Maildb == null) {
                        throw ("NoMaildb");
                    } else {
                        NewMail = MailDB.CreateDocument();
                        if (MailDoc == null) {
                            throw ('NoMailDoc');
                        } else {
                            // Populate the fields
                            NewMail.AppendItemValue("Form", "Memo")
                            NewMail.AppendItemValue("SendTo", mToMail)
                            NewMail.AppendItemValue("From", From)
                            NewMail.AppendItemValue("Subject", mSub)
                            NewMail.AppendItemValue("Body", mMsg)
                            NewMail.Save(True, False)
                            NewMail.Send(False)

                        }

                    }
                }
            } catch (err) {
                // feel free to improve error handling...
                alert('Error while sending mail');
            }
        }

但现在,警报1,2,3正在进行,然后计数器移动到catch区块。莲花笔记会议尚未开始。

在我之前看过的powershell脚本中,有regsvr32 "$NotesInstallDir\nlsxbe.dll" /s之前使用过的代码Session = new ActiveXObject("Lotus.NotesSession");。在javascript中是否有类似的东西,如果是这样,我如何调用该DLL。

我想我已经意识到自己哪里出错了。据我所知,事情是好的alert("5")。但由于Lotus.NotesSession没有CreateDocument()方法,因此它会抛出错误。我不知道如何创建文档并填充值。

1 个答案:

答案 0 :(得分:1)

由于您已选择使用Notes.NotesUIWorkspace类,因此您正在使用Notes客户端前端。它正在运行,您的用户会看到屏幕上发生了什么。您是否知道有一组后端类(根据Lotus.NotesSession而不是Notes.NotesSessionNotes.NotesUIWorkspace)直接使用Notes数据库数据,而不会导致Notes客户端抓取关注并展示你正在做的一切?

使用前端意味着在某些情况下(取决于您正在使用的Notes的版本),您不会直接使用Notes消息中标准的字段名称,如存储和在后端看到。您将使用用于查看和编辑消息的表单中用作临时输入的名称。您可以使用Domino Designer查看这些名称以查看备注表单。

请尝试使用:

,而不是使用“SendTo”

MailDoc.Fieldsettext('EnterSendTo', mToMail)

关于Body字段,没有涉及临时字段,但是您没有真正解释过您遇到的困难。你不知道如何在浏览器中显示你想要的界面吗?你不知道如何将不同的输入组合成一个FieldSetText电话吗?或者您是否对FieldSetText无法进行任何花哨格式化这一事实感到不满?在后一种情况下,为了获得更多的格式化功能,您可能希望切换到使用后端类,这使您可以访问具有更多格式化功能的NotesRichTextItem类。