我使用JavaScript和Windows脚本宿主与Outlook项目的工作目前活动Outlook店。确定在VBA/WSH VBS
这已经足够简单,直到我们的用户之一指出,脚本不工作,因为他已经在Outlook中配置两个Exchange配置文件。
的一个脚本应该工作在第二轮廓,但如果我访问,例如Outlook类别主列表,这是从标准配置文件加载的。
答案是很容易的,我只需要解决的正确Outlook store object。我的脚本需要确定在当前活动的Outlook Explorer中正在访问哪个存储,并且我找不到原生功能。
给定一个outlook application objectvar ol = new ActiveXObject("Outlook.Application")
,我可以通过简单地调用ol.[ActiveExplorer()][4];
但会话对象,通过这些商店进行访问,不提供等效的功能本身确定当前活动Outlook资源管理器。
,我想出了一个解决办法,通过与环比商店的display names
ol.Session.Stores.Item(counter).DisplayName // "[email protected]"
所以我有工作代码比较explorer's caption
ol.ActiveExplorer().Caption // "Inbox - [email protected] - Outlook"
:
function ActiveStore(olApplication) {
var ActiveExplorerCaption=olApplication.ActiveExplorer().Caption;
for (var storeCounter=1; storeCounter<=olApplication.Session.Stores.Count; storeCounter++) {
var storeDisplayName=olApplication.Session.Stores.Item(storeCounter).DisplayName;
if (ActiveExplorerCaption.indexOf(storeDisplayName)!=-1) return olApplication.Session.Stores.Item(storeCounter);
}
return "undefined";
};
var ol = new ActiveXObject("Outlook.Application");
WScript.Echo("The Outlook store currently active in an explorer is called "+ActiveStore(ol).DisplayName);
但是,我想知道:
- 将这个代码总是工作,即此变量始终在此设立方式,或者只是在安装我可以
- 工作是不是有更好的办法来确定当前活动的商店吗?
快速解释,为什么我用Visual Basic标记了这一点,当我使用JavaScript时:我明显对vba(脚本)中的解决方案开放,因为这是Outlook更常用的。如果有一种解决方案可以在Outlook vba中运行,那么我可以将其适应wsh jscript。 – mheim