function OnInit(initData) { initData.name = 'WatchFolderForCollection'; initData.version = '2025-05-28'; initData.url = 'https://resource.dopus.com/t/how-to-dynamically-update-a-file-collection-when-new-files-are-added-to-a-folder/55902'; initData.desc = 'WatchFolderForCollection'; initData.default_enable = true; initData.min_version = '13.0'; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = 'WatchFolderForCollectionStart'; cmd.method = 'OnWatchFolderForCollectionStart'; cmd.desc = 'WatchFolderForCollectionStart'; cmd.label = 'WatchFolderForCollectionStart'; cmd.template = ''; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'WatchFolderForCollectionStop'; cmd.method = 'OnWatchFolderForCollectionStop'; cmd.desc = 'WatchFolderForCollectionStop'; cmd.label = 'WatchFolderForCollectionStop'; cmd.template = ''; cmd.hide = false; cmd.icon = 'script'; } var folderToWatch = 'D:\\test'; var targetCollection = 'coll://WatchedFolderCollection'; var itemID = 'FolderForCollection'; var fsu = DOpus.FSUtil(); if (!fsu.Exists(folderToWatch)) { var cmd = DOpus.Create().Command(); cmd.RunCommand('CreateFolder NAME="' + folderToWatch + '"'); } if (!fsu.Exists(targetCollection)) { var cmd = DOpus.Create().Command(); cmd.RunCommand('CreateFolder NAME="' + targetCollection + '"'); } function OnWatchFolderForCollectionStart(scriptCmdData) { fsu.WatchChanges(itemID, folderToWatch, 'f'); var ssi = DOpus.Create().StringSetI(fsu.ReadDir(folderToWatch).Next(-1)); Script.vars.Set('ssi', ssi); DOpus.vars.Set('WatchFolderForCollection', 'on'); } function OnWatchFolderForCollectionStop(scriptCmdData) { fsu.CancelWatchChanges(itemID); DOpus.vars.Set('WatchFolderForCollection', 'off'); } function OnFilesystemChange(FilesystemChangeData) { if (FilesystemChangeData.id != itemID) return; var ssi = Script.vars.Get('ssi'); var cmd = DOpus.Create().Command(); cmd.ClearFiles(); var folderEnum = fsu.ReadDir(folderToWatch); while (!folderEnum.complete) { var folderItem = folderEnum.Next(); if (ssi.insert(folderItem)) { cmd.AddFile(folderItem); } } folderEnum.Close(); Script.vars.Set('ssi', ssi); cmd.SetDest(targetCollection); cmd.RunCommand('Copy COPYTOCOLL=member'); }