0

PDFを持っていて、その内容をフェッチしてBlobに保存します。ただし、MailApp.sendEmail()を使用して、このBLOBを電子メールの添付ファイルとして添付することはできません。オプションの添付ファイルパラメーターには、「電子メールで送信するファイル」と記載されています。各アイテムは、String fileName、String mimeType(オプション)、およびStringcontentのプロパティを持つJavaScriptオブジェクトです。」

mimeTypeを「application/pdf」に設定することはできますが、機能しません。おそらく、エンコードが関係しているためです。これがサンプルコードです

     var resp = UrlFetchApp.fetch(link); 
      if (resp.getResponseCode() == 200){
        var blob = Utilities.newBlob(resp.getContent());
        Logger.log(blob.getDataAsString());
        //            var pdf = blob.getAs('application/pdf'); 
        var options = {'attachments' : 
                       {'fileName' : 'test',
                        'mimeType' : 'application/pdf',
                        'content' : blob.getDataAsString() //Doesn't work 
                       }
                      };
        MailApp.sendEmail(TO_EMAIL, 'Subject','', options);
      }
4

2 に答える 2

1

ドキュメントには、添付ファイルのコンテンツは文字列である必要があると記載されていますが、バイト配列も受け入れます。これが機能するコードです

      var resp = UrlFetchApp.fetch(link); 
      if (resp.getResponseCode() == 200){
        var blob = Utilities.newBlob(resp.getContent());
        Logger.log(blob.getDataAsString());
        //            var pdf = blob.getAs('application/pdf'); 
        var options = {'attachments' : 
                       {'fileName' : 'test',
                        'mimeType' : 'application/pdf',
                        'content' : blob.getBytes()
                       }
                      };
        MailApp.sendEmail(TO_EMAIL, 'Subject','', options)
      }
于 2012-11-05T19:04:33.997 に答える
1

これらのドキュメントを更新する必要があります...ファイル名やmimetypeなどのオブジェクトを必要とせずに、実際にBlobを直接アタッチできます。

 var resp = UrlFetchApp.fetch("www.google.com"); 
 if (resp.getResponseCode() == 200){

FetchResponseオブジェクト(別名「resp」と呼ばれる変数)には「getBlob」メソッドがあります。つまり、特別なことを何もせずに、blobを使用したい場所で使用できます。

   MailApp.sendEmail(TO_EMAIL, 'Subject', '', {attachments: resp});

または、FetchResponseから明示的なBlobを取得することもできます。これは、いくつかの追加メソッドを使用したデータの優れたラッパーです。これを行う唯一の明白な理由は、ファイル名またはmimeタイプを変更することですが、UrlFetchAppはすでにこれらを適切なデフォルトに設定していることに注意してください(たとえば、MyFile.pdfという名前のpdfをダウンロードした場合、名前とmimeタイプはすでに設定されています'MyFile.pdf'および'application/ pdf'としてあなたのために)。

   var blob = resp.getBlob();
   blob.setName('test');
   MailApp.sendEmail(TO_EMAIL, 'Subject', '', {attachments: blob});
}
于 2012-11-05T21:18:48.990 に答える