回答編集履歴

2

 

2024/04/26 18:31

投稿

YellowGreen
YellowGreen

スコア731

test CHANGED
@@ -1,82 +1,2 @@
1
1
  (こちらは古い回答ですので、5回目の回答をご確認ください。)
2
2
 
3
- こちらはスプレッドシートに保存するスクリプトです。
4
- 紛らわしくならないよう、新たな回答としてアップしました。
5
-
6
- 老婆心ながら、回答の取りこぼしを防ぐためにスプレッドシートの方に保存するスクリプトもお示ししておきます。
7
- 【ご希望されていた最初の回答を修正したものは、4回目の回答をご覧ください。】
8
- 回答先のスプレッドシートのシート名を指定して返信できるようにしてあります。
9
- 回答先のシート名の指定のほか、フォームメールアドレスを取得したアドレスへの返信、送信元としてエイリアスのメールアドレスからの返信に対応しております。
10
- 複数のフォームの回答先になっているスプレッドシートに保存してトリガーを設定した上で動作することを確認してあります。
11
-
12
- 繰り返しますが、こちらのスクリプトは、スプレッドシートの方に保存するものです。
13
- こちらを利用されるときは、スプレッドシートの拡張機能からApps Scriptを開いてエディタに保存してください。
14
- こちらを利用してスプレッドシートの方にトリガー設定されるときは、フォームのトリガーを削除してください。
15
- しないとメールが2通届きます。
16
- //←のところを環境に合わせて書き換えてから利用します。
17
-
18
- ```javascript
19
- //フォーム送信時に蓄積されたシートのデータからメールを返信
20
- function onFormSubmit() {
21
- const nameSheet = 'フォームの回答 1';//←返信するフォームの回答が蓄積されるシート名
22
- const qName = '氏名';//←名前の質問名
23
- const qEmail = 'メールアドレス';//←メールアドレスを収集する場合は変更しない
24
- const qSelect = 'どれがいいでしょうか';//←選択肢の質問に含まれる言葉
25
- const aSelect = ['東京', '大阪'];//←選択肢の回答のうちメールを返信する回答
26
- let aName = '';
27
- let aEmail = '';
28
- const sheet = SpreadsheetApp.getActiveSheet();
29
- //対象のシートでないなら処理を中断
30
- if (sheet.getName() != nameSheet) {
31
- console.log(sheet.getName());
32
- return;
33
- }
34
- const lastRow = sheet.getLastRow();
35
- const lastCol = sheet.getLastColumn();
36
- //質問名を配列に取得
37
- const questions = sheet.getRange(1, 1, 1, lastCol).getValues().flat();
38
- //回答である最終行を配列に取得
39
- const answers = sheet.getRange(lastRow, 1, 1, lastCol).getValues().flat();
40
- //フォームの回答を取得
41
- let isMatch = false;
42
- questions.forEach((question, index) => {
43
- if (question.includes(qSelect)) {
44
- const str = aSelect.join('&');
45
- if (str.includes(answers[index])) {
46
- isMatch = true;//選択項目が選ばれていた
47
- }
48
- } else if (question == qName) {
49
- aName = answers[index];
50
- } else if (question == qEmail) {
51
- aEmail = answers[index];
52
- }
53
- });
54
- if (isMatch) {
55
- // 返信メール内容を取得
56
- const mailContent = getMailContent();
57
- // 自動返信メール件名
58
- const subject = 'お問い合わせありがとうございました。';
59
- // 自動返信メール本文
60
- const body = aName + '様\n\n' + mailContent;
61
- // メール送信(エイリアスがあるならエイリアスで送信)
62
- const aliases = GmailApp.getAliases();//エイリアス取得
63
- GmailApp.sendEmail(//MailApp → GmailApp
64
- aEmail,
65
- subject,
66
- body,
67
- {
68
- from: aliases[0],//←インデックスでエイリアスを指定
69
- name: '差出人の名前'//←差出人の名前
70
- }
71
- );
72
- console.log(aliases);
73
- console.log(aEmail);
74
- }
75
- }
76
- function getMailContent() {
77
- const DOC_URL = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//←URLを書き換え
78
- const doc = DocumentApp.openByUrl(DOC_URL);
79
- return doc.getBody().getText();
80
- }
81
- ```
82
-

1

冒頭の文言を変更しました。

2023/09/16 06:47

投稿

YellowGreen
YellowGreen

スコア731

test CHANGED
@@ -1,4 +1,7 @@
1
+ (こちらは古い回答ですので、5回目の回答をご確認ください。)
2
+
3
+ こちらはスプレッドシートに保存するスクリプトです。
1
- こちらは、紛らわしくならないよう、新たな回答としてアップしました。
4
+ 紛らわしくならないよう、新たな回答としてアップしました。
2
5
 
3
6
  老婆心ながら、回答の取りこぼしを防ぐためにスプレッドシートの方に保存するスクリプトもお示ししておきます。
4
7
  【ご希望されていた最初の回答を修正したものは、4回目の回答をご覧ください。】