前提・実現したいこと
GASで特定のフォルダに保存しているファイルを添付する方法として、
後述のアプローチを試みましたが構築しきれません。
最終目的:Google Workspaceを利用のグループ内アカウントで共有する、一斉送信ツールをつくりたい
STEP1:グループ内個々のアカウントでログイン
STEP2:共有する宛先リストにチェックを入れた宛先のみ送信する
STEP3:送信アカウント・情報は1のアカウントを利用
STEP4:特定の共有フォルダにファイルを保存するルールで運用し、添付ファイルは複数になる場合がある
STEP5:送信後、配信先リスト付で利用者にもメール。特定のスプレッドシートに利用ログを記載する。共有フォルダのファイルは削除する
当質問は「STEP4」の箇所です。
質問者のレベル:
皆さまのブログ、YoutubeなどでGASを独学。
ワードプレスサイトからカテゴリ別に記事を取得し、更新通知をHTML形式のメルマガとして
共有リスト宛に自動配信を実装しています。
発生している問題・エラーメッセージ
アプローチ1の場合・・・Utilities.zipでエラーになる。
Exception: The parameters (DriveApp.FileIterator,String) don't match the method signature for Utilities.zip.
アプローチ2の場合・・・特定フォルダ内のファイル数が 0 から不特定多数の場合、個々にgetBlobし、sendEmailメソッドでoption:[]のカッコ内に指定する方法がわかりません。
該当のソースコード
GAS
1 let attached_files = []; 2 let zantei_files = []; 3 const attached_folder = DriveApp.getFolderById('添付用の共有フォルダのID'); 4 const files = attached_folder.getFiles(); 5 while (files.hasNext()) { 6 const file = files.next(); 7 const file_ID = file.getId(); 8 zantei_files.push(file_ID); 9 } 10 11 if (zantei_files.length == 1) { 12 attached_files = DriveApp.getFileById(zantei_files[0]).getBlob(); 13 } else { 14 15 var filelist = attached_folder.getFiles(); 16 var zipman = Utilities.zip(filelist, 'test.zip'); 17 attached_folder.createFile(zipman).rename(title_text + '.zip');//圧縮ファイル名はメールの件名にする 18 attached_files = DriveApp.getFilesByName(title_text + '.zip'); 19 20 21 //上記の処理後、sendEmailメソッドのoptionで attachment : attached_files と指定するつもりです
試したこと
アプローチ1:対象ファイルが一つの場合はそのまま添付。複数の場合はZipファイル化する
アプローチ2:何個だろうとそのまま添付する
※第一希望は2です。
「GAS 添付 フォルダ メール」「GAS 圧縮 フォルダ」などGoogle・Youtube検索・閲覧をしましたが、解決しませんでした。
どうぞ、よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/14 13:14