Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. #!/usr/bin/env osascript -l JavaScript
  2.  
  3. // Move messages from default account to archive account
  4.  
  5. "use strict";
  6. var outlook = Application("Microsoft Outlook");
  7.  
  8. function getParentFolderName(folder) {
  9. return folder.container().name() != null ? "/" + folder.container().name() : "";
  10. }
  11.  
  12. function findSubFolderByName(folder, name) {
  13. return folder.mailFolders().find(function (subFolder) {
  14. return subFolder.name() == name;
  15. });
  16. }
  17.  
  18. function msgCntInFolderForArchiving(folder) {
  19. return folder.messages().length - folder.unreadCount();
  20. }
  21.  
  22. function moveMsgs(srcFolder, destFolder) {
  23. srcFolder.messages().forEach(function (msg) {
  24. if (msg.isRead()) {
  25. outlook.move(msg, { to: destFolder });
  26. }
  27. });
  28. }
  29. function archiveFolder(srcFolder, destFolder) {
  30. // Archiving self
  31. var msgCnt = msgCntInFolderForArchiving(srcFolder);
  32. var parentName = getParentFolderName(srcFolder);
  33. console.log("Archiving: %s/%s (%d)", parentName, srcFolder.name(), msgCnt);
  34.  
  35. moveMsgs(srcFolder, destFolder);
  36.  
  37. // Archiving sub folders
  38. var srcSubFolders = new Array();
  39. srcFolder.mailFolders().forEach(function (srcSubFolder) {
  40. var msgCnt = msgCntInFolderForArchiving(srcSubFolder);
  41. var destSubFolder = findSubFolderByName(destFolder, srcSubFolder.name());
  42. if (destSubFolder != null) {
  43. archiveFolder(srcSubFolder, destSubFolder);
  44. } else {
  45. console.log("Skipping : /%s/%s (%d)", srcFolder.name(), srcSubFolder.name(), msgCnt);
  46. }
  47. });
  48. }
  49.  
  50. function getDestAccount(email) {
  51. var destAccount = outlook.exchangeAccounts().find(function (elem) {
  52. return elem.emailAddress() == email;
  53. });
  54. if (!destAccount) throw "Cannot found dest account: " + email;
  55. return destAccount;
  56. }
  57.  
  58. function getDestFolder(destAccount, folderName) {
  59. var destFolder = destAccount.mailFolders().find(function (elem) {
  60. return elem.name() == folderName;
  61. });
  62. if (!destFolder) throw "Cannot found dest folder: " + folderName;
  63. return destFolder;
  64. }
  65.  
  66. // Entry point
  67. function run(argv) {
  68. if (argv.length < 2) {
  69. return "usage: move-mails-outlook-mac.js <email> <folder>";
  70. }
  71. var destAccount = getDestAccount(argv[0]);
  72. var destFolder = getDestFolder(destAccount, argv[1]);
  73.  
  74. // Asume default account is the source account
  75. var srcAccount = outlook.defaultAccount();
  76. var srcFolder = srcAccount.inbox();
  77.  
  78. console.log("Archiving messages from " + srcAccount.name() + "/Inbox to " + destAccount.name() + "/" + destFolder.name());
  79. //archiveFolder(srcFolder, destFolder);
  80. archiveFolder(srcFolder, destFolder);
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement