@@ -70,6 +70,46 @@ function getOrCreateFolder(folderName) {
70
70
return folder ;
71
71
}
72
72
73
+ /**
74
+ * Processes a message
75
+ */
76
+ function processMessage ( message , rule , config ) {
77
+ Logger . log ( "INFO: Processing message: " + message . getSubject ( ) + " (" + message . getId ( ) + ")" ) ;
78
+ var messageDate = message . getDate ( ) ;
79
+ var attachments = message . getAttachments ( ) ;
80
+ for ( var attIdx = 0 ; attIdx < attachments . length ; attIdx ++ ) {
81
+ var attachment = attachments [ attIdx ] ;
82
+ Logger . log ( "INFO: Processing attachment: " + attachment . getName ( ) ) ;
83
+ var match = true ;
84
+ if ( rule . filenameFromRegexp ) {
85
+ var re = new RegExp ( rule . filenameFromRegexp ) ;
86
+ match = ( attachment . getName ( ) ) . match ( re ) ;
87
+ }
88
+ if ( ! match ) {
89
+ Logger . log ( "INFO: Rejecting file '" + attachment . getName ( ) + " not matching" + rule . filenameFromRegexp ) ;
90
+ continue ;
91
+ }
92
+ try {
93
+ var folder = getOrCreateFolder ( Utilities . formatDate ( messageDate , config . timezone , rule . folder ) ) ;
94
+ var file = folder . createFile ( attachment ) ;
95
+ if ( rule . filenameFrom && rule . filenameTo && rule . filenameFrom == file . getName ( ) ) {
96
+ var newFilename = Utilities . formatDate ( messageDate , config . timezone , rule . filenameTo . replace ( '%s' , message . getSubject ( ) ) ) ;
97
+ Logger . log ( "INFO: Renaming matched file '" + file . getName ( ) + "' -> '" + newFilename + "'" ) ;
98
+ file . setName ( newFilename ) ;
99
+ }
100
+ else if ( rule . filenameTo ) {
101
+ var newFilename = Utilities . formatDate ( messageDate , config . timezone , rule . filenameTo . replace ( '%s' , message . getSubject ( ) ) ) ;
102
+ Logger . log ( "INFO: Renaming '" + file . getName ( ) + "' -> '" + newFilename + "'" ) ;
103
+ file . setName ( newFilename ) ;
104
+ }
105
+ file . setDescription ( "Mail title: " + message . getSubject ( ) + "\nMail date: " + message . getDate ( ) + "\nMail link: https://mail.google.com/mail/u/0/#inbox/" + message . getId ( ) ) ;
106
+ Utilities . sleep ( config . sleepTime ) ;
107
+ } catch ( e ) {
108
+ Logger . log ( e ) ;
109
+ }
110
+ }
111
+ }
112
+
73
113
/**
74
114
* Main function that processes Gmail attachments and stores them in Google Drive.
75
115
* Use this as trigger function for periodic execution.
@@ -107,40 +147,7 @@ function Gmail2GDrive() {
107
147
var messages = thread . getMessages ( ) ;
108
148
for ( var msgIdx = 0 ; msgIdx < messages . length ; msgIdx ++ ) {
109
149
var message = messages [ msgIdx ] ;
110
- Logger . log ( "INFO: Processing message: " + message . getSubject ( ) + " (" + message . getId ( ) + ")" ) ;
111
- var messageDate = message . getDate ( ) ;
112
- var attachments = message . getAttachments ( ) ;
113
- for ( var attIdx = 0 ; attIdx < attachments . length ; attIdx ++ ) {
114
- var attachment = attachments [ attIdx ] ;
115
- Logger . log ( "INFO: Processing attachment: " + attachment . getName ( ) ) ;
116
- var match = true ;
117
- if ( rule . filenameFromRegexp ) {
118
- var re = new RegExp ( rule . filenameFromRegexp ) ;
119
- match = ( attachment . getName ( ) ) . match ( re ) ;
120
- }
121
- if ( ! match ) {
122
- Logger . log ( "INFO: Rejecting file '" + attachment . getName ( ) + " not matching" + rule . filenameFromRegexp ) ;
123
- continue ;
124
- }
125
- try {
126
- var folder = getOrCreateFolder ( Utilities . formatDate ( messageDate , config . timezone , rule . folder ) ) ;
127
- var file = folder . createFile ( attachment ) ;
128
- if ( rule . filenameFrom && rule . filenameTo && rule . filenameFrom == file . getName ( ) ) {
129
- var newFilename = Utilities . formatDate ( messageDate , config . timezone , rule . filenameTo . replace ( '%s' , message . getSubject ( ) ) ) ;
130
- Logger . log ( "INFO: Renaming matched file '" + file . getName ( ) + "' -> '" + newFilename + "'" ) ;
131
- file . setName ( newFilename ) ;
132
- }
133
- else if ( rule . filenameTo ) {
134
- var newFilename = Utilities . formatDate ( messageDate , config . timezone , rule . filenameTo . replace ( '%s' , message . getSubject ( ) ) ) ;
135
- Logger . log ( "INFO: Renaming '" + file . getName ( ) + "' -> '" + newFilename + "'" ) ;
136
- file . setName ( newFilename ) ;
137
- }
138
- file . setDescription ( "Mail title: " + message . getSubject ( ) + "\nMail date: " + message . getDate ( ) + "\nMail link: https://mail.google.com/mail/u/0/#inbox/" + message . getId ( ) ) ;
139
- Utilities . sleep ( config . sleepTime ) ;
140
- } catch ( e ) {
141
- Logger . log ( e ) ;
142
- }
143
- }
150
+ processMessage ( message , rule , config ) ;
144
151
}
145
152
thread . addLabel ( label ) ;
146
153
if ( doArchive ) {
0 commit comments