关于在Notes视图拖拽文件/O365附件创建带附件文档的方案咨询
可行的替代方案分享(针对Notes 10.0.1FP4拖拽文件创建带附件文档需求)
我之前在Notes 10.x环境下处理过类似的需求,官方确实没有直接的开箱即用文档,不过有几个经过验证的替代方案可以实现目标:
方案1:利用Notes视图的拖拽事件编写LotusScript处理
Notes客户端的视图支持QueryDragDrop事件,我们可以通过编写该事件的LotusScript代码,捕获拖拽进来的文件/O365附件,自动创建新文档并嵌入附件:
- 打开Notes Designer,找到目标视图,进入视图的事件编辑界面
- 选择
QueryDragDrop事件,编写如下核心代码片段:
Sub QueryDragDrop(Source As Variant, X As Long, Y As Long, Ctrls As Variant, _ Accepted As Integer) Dim session As New NotesSession Dim db As NotesDatabase Dim newDoc As NotesDocument Dim item As NotesItem Dim filePaths As Variant Dim i As Integer Set db = session.CurrentDatabase ' 捕获拖拽的文件路径(支持多文件) filePaths = Source.Files If Isempty(filePaths) Then Exit Sub ' 创建新文档 Set newDoc = db.CreateDocument newDoc.Form = "你的表单名称" ' 替换为实际要使用的表单 Call newDoc.Save(True, False) ' 将拖拽的文件逐个嵌入为附件 For i = Lbound(filePaths) To Ubound(filePaths) Call newDoc.EmbedObject(EMBED_ATTACHMENT, "", filePaths(i), "Attachment") Next Call newDoc.Save(True, False) Accepted = True ' 标记拖拽事件已处理 End Sub
这个方案能实现原生拖拽的体验,不过要注意O365附件拖拽时,Notes会先将附件临时下载到本地,所以代码中获取的是本地临时文件路径,处理逻辑是通用的。
方案2:通过Power Automate联动O365与Notes
如果你的场景更偏向O365附件的集成,可以用Power Automate(原Microsoft Flow)搭建自动化流程:
- 触发条件:当O365 Outlook/OneDrive中有新附件添加到指定位置(或用户手动触发)
- 操作步骤:
- 获取附件的内容和元数据
- 使用Notes的REST API(或COM组件,客户端环境下)连接到Notes数据库
- 创建新的Notes文档,并将O365附件的内容作为附件嵌入到文档中
这个方案适合需要跨平台同步的场景,不过需要配置Notes的API访问权限,以及确保Power Automate能访问到你的Notes环境。
方案3:自定义工具栏/侧边栏按钮简化操作
如果拖拽的必要性不是特别强,可以做一个更简单的替代:在Notes客户端添加自定义按钮,用户选中文件/O365附件后点击按钮,自动创建带附件的文档:
- 在视图的操作栏添加一个新按钮
- 编写LotusScript代理,实现以下逻辑:
Sub Click(Source As Button) Dim session As New NotesSession Dim db As NotesDatabase Dim newDoc As NotesDocument Dim uiWorkspace As New NotesUIWorkspace Dim filePaths As Variant Set db = session.CurrentDatabase ' 弹出文件选择对话框(支持多选) filePaths = uiWorkspace.OpenFileDialog(True, "选择要添加的文件", "*.*", "", "") If Isempty(filePaths) Then Exit Sub Set newDoc = db.CreateDocument newDoc.Form = "你的表单名称" Forall fp In filePaths Call newDoc.EmbedObject(EMBED_ATTACHMENT, "", fp, "Attachment") End Forall Call newDoc.Save(True, False) Messagebox "新文档已创建并添加附件", MB_INFO End Sub
这个方案实现成本低,用户容易上手,不需要处理复杂的拖拽事件逻辑。
注意事项
- 确保运行代码的Notes客户端有足够的权限创建文档和添加附件
- 对于O365附件的拖拽,Notes会自动将其下载到本地临时目录,所以方案1的代码可以直接处理
- 如果是Web版Notes,上述客户端端的方案不适用,需要考虑基于浏览器的拖拽事件处理和Notes REST API结合
内容的提问来源于stack exchange,提问作者Acke
相关产品推荐
相关产品推荐

