実現したいこと
GASを使って、gmailに添付されているzipファイルとgzipファイルを解凍したうえで、googledriveにダウンロードしたいです。
前提
以上のことを実現したく、試行錯誤したものの、うまくいきません。
どなたかご助言お願いいたします。
発生している問題・エラーメッセージ
エラー TypeError: unGzippedfiles.forEach is not a function (匿名) @ 無題.gs:48 (匿名) @ 無題.gs:29 (匿名) @ 無題.gs:22 downloads1 @ 無題.gs:16
該当のソースコード
GAS
1// gmailから添付ファイルのダウンロード、ドライブに保存 2function downloads1() { 3 4 var unzipFile; 5 6 //添付ファイルを保存するフォルダを取得 7 var folder = DriveApp.getFolderById("1TAqWCnb8c5M_kgVos5dUmroCailqVLEE"); 8 9 //検索クエリを生成 10 var query = "is:unread Report Newer_than:1m"; 11 12 //検索queryに一致するスレッドを取得 13 var threads = GmailApp.search(query); 14 15 //各スレッド情報を取得 16 threads.forEach(function (thread) { //16行目 17 18 //スレッド内の全てのメッセージを取得 19 var messages = thread.getMessages(); 20 21 //各メッセージ情報を取得 22 messages.forEach(function (message) { //22 23 24 //メッセージ内の全ての添付ファイルを取得 25 var attachments = message.getAttachments(); 26 27 let date = Utilities.formatDate(message.getDate(), 'Asia/Tokyo', 'yyyyMMdd'); 28 29 attachments.forEach(function (attachment) { //29 30 31 // zipとgzipの解凍 32 if (attachment.getName().endsWith("zip")) { 33 34 let unzipFiles = Utilities.unzip(attachment.setContentType('application/zip')); 35 36 unzipFiles.forEach(function (unzipFile) { 37 let fileName = date + '_' + unzipFile.getName(); 38 39 unzipFile.setName(fileName); 40 41 //添付ファイルを指定フォルダに格納 42 folder.createFile(unzipFile); 43 44 }); 45 } else { 46 let unGzippedfiles = Utilities.ungzip(attachment.setContentType('application/x-gzip')); 47 48 unGzippedfiles.forEach(function (unGzippedfile) { //48 49 let fileName = date + '_' + unGzippedfile.getName(); 50 51 unGzippedfile.setName(fileName); 52 53 //添付ファイルを指定フォルダに格納 54 var contentType = "text/tsv"; 55 var charSet = "UTF8"; 56 57 var blobFile = Utilities.newBlob("", contentType, fileName).setDataFromString(unGzippedfile.getDataAsString(), charSet); 58 folder.createFile(blobFile); 59 60 }); 61 } 62 }); 63 }); 64 }); 65}
試したこと
zipファイルのみの解凍は実現しましたが、gzipファイルの解凍が実現できていないので、以下のサイトを参考にいろいろといじりました。
https://qiita.com/uca/items/8a5af72eec087b125fd6
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー