GoogleスプレッドシートでGoogleScriptを使用して、リスト内のすべての人にPDFファイルを送信するにはどうすればよいですか?
解複数のPDFファイルを複数の人に送信する方法
私は次のように問題を解決しています。
GoogleスプレッドシートのGoogleScirptサービスを使用して、PDFファイルをすべての人に送信します。リストの全員に1つのファイルを送信してみました。うまくいきました。
しかし、次のような新しい問題が発生しました
一人一人が異なるファイルを持ち、数は完全に異なります。
例えば:
Johnさんには、John_ 999901.pdf、John_ 999902.pdf、John_999903.pdfの3つのPDFファイルがあります。
Davidさんには2つのPDFファイル、David_ 999901.pdf、David_99990があります
Junさんには2つのPDFファイルがあります:Jun_999901.pdf、Jun_999902.pdf
そして最後に、Michelさんには1つのPDFファイルしかありません:Michel_999901.pdf。
すべてのPDFファイルはGOOGLE DRIVE で保存してあります。
リスト内の名前に対応するファイル名に基づいてメールを送信する方法はありませんか?
自分で試したこと
下記はGoogle App Script コードです。
function onOpen()
{
var ui = SpreadsheetApp.getUi();
ui.createMenu('メール送信')
.addItem('送信', 'sendFormToAll')
.addToUi();
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function sendFormToAll()
{
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var last_row = sheet.getDataRange().getLastRow();
for(var row=2; row <= last_row; row++)
{
sendEmailWithAttachment(row);
sheet.getRange(row,8).setValue("送信済");
}
}
function sendPDFForm()
{
var row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
sendEmailWithAttachment(row);
}
function sendEmailWithAttachment(row)
{
var filename= 'File.pdf';
var file = DriveApp.getFilesByName(filename);
if (!file.hasNext())
{
console.error("Could not open file "+filename);
return;
}
var client = getClientInfo(row);
var template = HtmlService
.createTemplateFromFile('index');
template.client = client;
var message = template.evaluate().getContent();
MailApp.sendEmail({
to: client.email,
subject: "納品書",
htmlBody: message ,
attachments: [file.next().getAs(MimeType.PDF)]
});
}
function getClientInfo(row)
{
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var values = sheet.getRange(row,1,row,8).getValues();
var rec = values[0];
var client =
{
company:rec[0],
department:rec[1],
derector:rec[2],
name: rec[3],
email: rec[6]
};
client.name = client.name;
return client;
}
下記はHTMLコードです
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
</head>
<body style="background-image: url('https://miyagen8.co.jp/wp-content/uploads/2021/11/background.png');background-repeat: no-repeat;
background-attachment: fixed;
background-position: center;">
<div >
<p> <?= client.company ?> </p>
<p>いつもお世話になります。</p>
<p>納品書送ります。ご確認お願い致します。</p>
<p>*********************************************************</p>
</div>
</body>
</html>
皆さんよろしくお願い申し上げます。
教えたらありがたいです。
0