質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

814閲覧

Googleフォームで送信される差出人の名前を任意のものにしたい

10-mo

総合スコア23

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2023/06/25 00:46

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • Googleフォームで送信していただいた後に、受信側に表示されるメールアドレスの名前を任意の名前にしたいです。

前提

予約フォームを作っています。諸々のスクリプトは動画などを見ながら作成できて上手く作動してくれるのですが、確認メールを送ると受信側に現状、私のメールアドレスがそのまま表示されてしまっています。

発生している問題・エラーメッセージ

エラーメッセージ

ReferenceError: mail_options is not defined
at sendEmail(コード:116:50)
at receivedApplication(コード:54:3)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

下記、スクリプトになります

function myFunction() {
var form = FormApp.getActiveForm();// Google フォーム オブジェクトの取得
Logger.log(form.getId()); // Google フォーム のid
Logger.log(form.getTitle()); // Google フォーム のタイトル
Logger.log(form.getDescription()); // Google フォーム の説明文

Logger.log("==========");

// Google フォーム の各質問
var items = form.getItems();
for(var i=0; i<items.length; i++){
var item = items[i];
Logger.log(item.getTitle());// 質問のタイトル
}
}

const form = FormApp.getActiveForm();
//スプレッドシートの「日程」のIDを↓にいれる。
const spreadSheet = SpreadsheetApp.openById("ここにID");
const reserveSheet = spreadSheet.getSheetByName("予約");
const listSheet = spreadSheet.getSheetByName("日程");

// --------------------
// フォーム送信時の処理
// --------------------
function receivedApplication(e) {

// フォームの送信内容
const email = e.response.getRespondentEmail();
const items = e.response.getItemResponses();
const preferredDate = ( items[0].getItem().getTitle() === "参加希望日" ? items[0].getResponse() : "" );
let result = "";

const mail_options = {
'name' : 'ここで名前を決めたかった' //これで差出人名を変更できると思ったのですが、できませんでした

}

if ( preferredDate ){
// 日程シートチェック&更新
result = checkAvailability(preferredDate);
// 予約シートに申込内容を書き込み
if ( result = "OK" ){ reserveSheet.appendRow([email, preferredDate]); }
// フォームを更新
editForm();
} else {
result = "NG";
}

// メール送信
sendEmail(email, preferredDate, result, mail_options);

}

// ---------------------
// 予約状況をチェックする
// ---------------------
function checkAvailability(preferredDate){

// listシートを配列に格納
const list = listSheet.getDataRange().getValues();
list.shift();

// リストから予約日を探し、定員を確認する
for ( let i = 0; i < list.length; i++ ){
if ( list[i][0] == preferredDate ){
// 予約済 < 定員であればOK
if ( list[i][3] < list[i][1] ){
listSheet.getRange(i + 2, 3).setValue( list[i][3] );
return "OK";
} else {
return "NG";
}
}
}

// 希望日がリストに存在しなかった場合はNG
return "NG";

}

// ----------------------
// 予約結果をメール送信する
// ----------------------
function sendEmail(email, preferredDate, result){

const mailTitle = "予約結果について";
let mailBody;

if ( result == "OK" ){
mailBody = "予約が完了しました。\n"
+ `予約日:${preferredDate}
当日は、予約時間の○分前より受付致します。 \n
<当日の流れについて>
※内容記載

※ご予約のキャンセルは、こちらからお願い致します。 https://~ `

} else {
mailBody = "定員超過のため予約できませんでした。\n"
+ "下記のフォームから再度申請してください\n"
+ form.getPublishedUrl();
}

// 結果メール送信
GmailApp.sendEmail(email, mailTitle, mailBody, mail_options);

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

10-mo

2023/06/28 03:57 編集

コメントいただき有難うございます。
guest

回答1

0

ベストアンサー

この回答はGPT-4による自動生成回答です

ご質問ありがとうございます。sendEmail関数の引数にmail_optionsを追加していないため、エラーが発生しています。以下のように修正してください。

javascript

1// *----------------------* 2// 予約結果をメール送信する 3// *----------------------* 4function sendEmail(email, preferredDate, result, mail_options){ // mail_optionsを引数に追加 5 6 const mailTitle = "予約結果について"; 7 let mailBody; 8 9 if ( result == "OK" ){ 10 mailBody = "予約が完了しました。\n" 11 + `予約日:${preferredDate} 12 当日は、予約時間の○分前より受付致します。 \n 13 <当日の流れについて> 14     ※内容記載 15 16 17 ※ご予約のキャンセルは、こちらからお願い致します。 18 https://~ 19 ` 20 } else { 21 mailBody = "定員超過のため予約できませんでした。\n" 22 + "下記のフォームから再度申請してください\n" 23 + form.getPublishedUrl(); 24 } 25 26 // 結果メール送信 27 GmailApp.sendEmail(email, mailTitle, mailBody, mail_options); // mail_optionsを引数に追加 28 29}

これで、mail_optionsが正しく渡され、差出人名が変更されるはずです。お試しください。

投稿2023/06/25 00:46

teratail-ai

Powered by GPT-4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

10-mo

2023/06/25 00:59

ありがとうございました! 確かに、引数に入っていませんでした。初歩的なミスでした。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問