質問編集履歴

3

説明の追記、修正

2023/07/17 00:26

投稿

Zigsow
Zigsow

スコア22

test CHANGED
File without changes
test CHANGED
@@ -5,16 +5,18 @@
5
5
 
6
6
  ### 前提
7
7
 
8
- GASでの自動メール送信プログラムを作りましたが、
8
+ スプレッドシートからのGASでの自動一斉メール送信プログラムを作りましたが、
9
9
  太字や色付きなどが反映されない。
10
10
  スプレッドシートで名前やアドレスなどを記入しそれを取っています。
11
11
  メール本文はドキュメントに書いてあるものを指定しています。
12
+ スプレッドシートに可変的に動かす、名前や会社名などを記入して、
13
+ メール本文では自動で可変される仕組みです。
12
14
 
13
15
 
14
16
 
15
17
  ### 該当のソースコード
16
18
 
17
- ```ここに言語名を入力
19
+ ```GoogleAppScript
18
20
  function SendHTMLMail2() {
19
21
 
20
22
  const ss = SpreadsheetApp.getActiveSpreadsheet();
@@ -110,5 +112,4 @@
110
112
  ### 補足情報(FW/ツールのバージョンなど)
111
113
  このようなスプレッドシートです。
112
114
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-07-13/3be94272-07a0-4ed0-a124-0c023ad91441.png)
113
- ここにより詳細な情報を記載してください。
114
115
 

2

試したことの追記

2023/07/14 00:45

投稿

Zigsow
Zigsow

スコア22

test CHANGED
File without changes
test CHANGED
@@ -56,7 +56,56 @@
56
56
 
57
57
  ### 試したこと
58
58
 
59
+ function SendHTMLMail2() {
60
+
61
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
62
+ const sheet = ss.getSheetByName('アドレス帳(添付なし)'); //シート名指定
63
+ const lastRow = sheet.getLastRow();
64
+ const values = sheet.getRange(1, 1, lastRow, 9).getValues();
65
+
66
+ //↓修正した部分
67
+ var doc = '******'
68
+ var url = 'https://docs.google.com/feeds/download/documents/export/Export?id=' + doc + '&exportFormat=html';
69
+ var storageUsed = DriveApp.getStorageUsed(); //これが無いと認証エラー
70
+ var param = { method: 'get',
71
+ headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()},
72
+ muteHttpExceptions: true}; //muteHttp~はエラー回避用
73
+ var html = UrlFetchApp.fetch(url, param).getContentText();
74
+ //-----↑
75
+
76
+ const value = sheet.getRange("N8").getValue(); //件名のセル指定
77
+ const subject = value; //メールの件名(セル指定)
78
+ const fromName = 'なまえ'; //送信者名表示
79
+ const options = {name: fromName,htmlBody: html};
80
+
81
+ for(let i=1; i<values.length; i++){
82
+ if(values[i][7]=='〇' && values[i][6]!='送信済み'){ //判定が〇かつデータ2が送信済みでなければ処理続行
83
+ const mailAddress = values[i][2]; //メールアドレス
84
+ const name = values[i][1]; //名前
85
+ const company = values[i][3]; //会社・施設名
86
+ const department = values[i][4]; //部署名
87
+ const data1 = values[i][5]; //データ1
88
+ const data2 = values[i][6]; //データ2
89
+ const judge = values[i][7]; //判定
90
+ const check = values[i][8]; //送信チェック
91
+ const body = html //修正箇所
92
+ .replace('{'+values[0][1]+'}', name)
93
+ .replace('{'+values[0][3]+'}', company)
94
+ .replace('{'+values[0][4]+'}', department)
95
+ .replace('{'+values[0][5]+'}', data1)
96
+ .replace('{'+values[0][6]+'}', data2)
97
+ .replace('{'+values[0][7]+'}', judge)
98
+ .replace('{'+values[0][8]+'}', check);
99
+ GmailApp.sendEmail(mailAddress, subject, body, options);
100
+ sheet.getRange(i+1, 10).setValue("送信済み"); //送信成功後、送信チェックに入力
101
+ }
102
+ }
103
+ }
104
+
105
+ 上記にて試しましたが、ドキュメントに記載した内容をそのまま反映されたので、
106
+ 色付きや太字などはできたのですが、今度は可変的に動くべきところが反映されずという事態になってしまいました。
59
- ここに問題に対して試したとを載しください。
107
+ {名前}  {会社名}としているとろが左のまま表示されています
108
+ 本来、スプレッドシートにある名前や会社名が反映されるはずでした。。。
60
109
 
61
110
  ### 補足情報(FW/ツールのバージョンなど)
62
111
  このようなスプレッドシートです。

1

使用しているスプレッドシートの追加

2023/07/13 08:38

投稿

Zigsow
Zigsow

スコア22

test CHANGED
File without changes
test CHANGED
@@ -59,6 +59,7 @@
59
59
  ここに問題に対して試したことを記載してください。
60
60
 
61
61
  ### 補足情報(FW/ツールのバージョンなど)
62
-
62
+ このようなスプレッドシートです。
63
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-07-13/3be94272-07a0-4ed0-a124-0c023ad91441.png)
63
64
  ここにより詳細な情報を記載してください。
64
65