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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

2954閲覧

GASのメール送信機能でCCをつけたい&数字をカンマ区切りにしたい

r7656610

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/04/27 02:54

【2点教えてください】

GoogleスプレッドシートのGAS機能を使って
メールの一括送信スクリプトを作成したのですが、
(スクリプトエディタは下記に記載いたしました)
現時点ではtoのみしかそうしんできず、ここにCCを加えて
追加するにはどのようにしたらいいかご存じであればご教示いただきたいです。

また、値段を入れる際にスプレッドシートで1,000,000と入力しても
メールを送信すると1000000とカンマがなくなってしまいます。
こちらも何か解決策があればご教示いただけますでしょうか。

何卒宜しくお願い致します。

function

1 labels.forEach(function(label, index){ 2 mailSubject = mailSubject.split(`${${label}}`).join(values[index]) 3 mailBody = mailBody.split(`${${label}}`).join(values[index]) 4 }); 5 GmailApp.createDraft( 6 mailTo, 7 mailSubject, 8 mailBody 9 ); 10} 11 12function getTemplate(){ 13 const templateSheet = SpreadsheetApp.getActive().getSheetByName('テンプレート'); 14 const templateDataValues = templateSheet.getDataRange().getValues(); 15 if(templateDataValues.length == 2 && templateDataValues[0].length == 3){ 16 const range = SpreadsheetApp.getActive().getRange('A2:C2') 17 templateSheet.setActiveRange(range); 18 } 19 const templateValues = templateSheet.getActiveRange().getValues(); 20 if(templateValues.length != 1 || templateValues[0].length != 3){ 21 if(templateSheet.getDataRange().getValues()) 22 Browser.msgBox('エラー:「テンプレート」シートで、メールの件名と本文に利用したい行を、いずれか1行だけ選択状態にしてから、再実行してください。'); 23 throw new Error('エラー'); 24 } 25 26 const sheetName = templateValues[0][0]; 27 const mailSubject = templateValues[0][1]; 28 const mailBody = templateValues[0][2]; 29 30 return [sheetName, mailSubject, mailBody]; 31} 32 33 34function sendmailSet(){ 35 const [sheetName, mailSubject, mailBody] = getTemplate(); 36 const sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); 37 const data = sheet.getDataRange().getValues(); 38 const labels = data[0] 39 const emailColumnIndex = labels.findIndex((value)=>value==="email"); 40 for (let i = 1; i < data.length; i++) { // 1行目はヘッダなので1から始める 41 let row = data[i] 42 let mailTo = row[emailColumnIndex]; // 送付先メールアドレス 43 let values = row; 44 if(mailTo && mailTo.length > 0 && mailTo.indexOf("@") > 0){ 45 sendmail(mailTo, mailSubject, mailBody, labels, values); 46 } 47 } 48} 49 50 51function onOpen(){ 52 const menu=[ 53 {name: "テンプレートでメールを送信", functionName: "sendmailSet"}, 54 ]; 55 SpreadsheetApp.getActiveSpreadsheet().addMenu("メール一括送信", menu); 56} 57コード

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

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

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

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

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

guest

回答1

0

検索すると
【GAS】Gメールの下書き(ドラフト)機能まとめ【サンプルソース付】

ccの加え方は

GAS

1 GmailApp.createDraft( 2 mailTo, 3 mailSubject, 4 mailBody,{ 5 cc:"~1@ccc.ccc,~2@ccc.ccc" 6 } 7 );

で出来ました。

GmailApp.sendEmailの場合も、ccについては同じ書き方で行けるようです。

あと、1,000,000と入力しても1000000...の件ですが
.getValues()で取得すると値が取得されるようです。
表示内容を取得する場合には
.getDisplayValues()でいいのではないでしょうか。

投稿2021/04/27 11:19

編集2021/04/27 11:29
xail2222

総合スコア1497

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

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

r7656610

2021/05/18 05:46

ご回答ありがとうございます。返信が遅くなり申し訳ありません。 CCのをスクリプトに入れてみたのですが、これを入れると今までスプレッドシートのヘルプの右に表示されていた メール送信ボタンがなくなってしまったのですが、対象法をご存じでしたらご教示いただけますと幸いです。 また、金額のカンマについては表示されました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問