【Apps Script】確認ダイアログボックスの表示方法
解決したいこと
確認ダイアログボックスが表示したい
chatgptを使用しながら、メール処理ツールを作成しコードを学習していたのですが
ダイアログボックスが表示されず困っています。
SpreadsheetApp.getUi()で取得される値をデバックで確認するにもデバックの準備完了と
デバックを開始という画面が交互に表示されデバックができない状態です。
エラーメッセージは出ていなく、webのポップアップブロックなども解除済みです。
一応スクリプトは動いていて名前が一致している際には、メールが送信され散る状態です。
sheet1には名前のみ
sheet2には名前、メールアドレスがある状態です。
記載コード
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2");
var data1 = sheet1.getRange("A:A").getValues().flat(); // Sheet1から名前のリストを取得
var data2 = sheet2.getRange("A:B").getValues(); // Sheet2から名前とメールアドレスのリストを取得
var senderEmail = Session.getActiveUser().getEmail(); // 送信者のメールアドレスを取得
var emailSubject = "件名";
var emailBody = "内容";
// 実行を遅延させる
Utilities.sleep(1000); // 1000ミリ秒(1秒)の遅延
for (var i = 0; i < data1.length; i++) {
var name = data1[i];
if (name != "") {
var found = false; // 名前がSheet2に見つかったかどうかを示すフラグ
for (var j = 0; j < data2.length; j++) {
if (name == data2[j][0]) {
var recipientEmail = data2[j][1]; // Sheet2からメールアドレスを取得
MailApp.sendEmail(recipientEmail, emailSubject, emailBody, { from: senderEmail });
found = true; // 名前がSheet2に見つかったことを示す
break; // 一致する名前が見つかったらループを終了
}
}
if (!found) {
// Sheet2に名前が見つからなかった場合、確認ダイアログを表示
var ui = SpreadsheetApp.getUi();
var response = ui.alert('名前がSheet2に見つかりません', '名前: ' + name + ' のメールアドレスがSheet2に見つかりません。この名前に対してメールを送信しますか?', ui.ButtonSet.YES_NO);
if (response == ui.Button.YES) {
// YESが選択された場合、送信を続行
MailApp.sendEmail('メールアドレスを入力', emailSubject, emailBody, { from: senderEmail });
} else {
// NOが選択された場合、次の名前に進む
continue;
}
}
}
}
}
自分で試したこと
下記コードでポップアップが表示されるのか試した際には、表示されました。
function myFunction() {
Browser.msgBox("Hello World!");
}
0 likes