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

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

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

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

Google

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

Q&A

解決済

1回答

3811閲覧

GASのメール送信で日付の表記を直したいです。

r7656610

総合スコア3

Google スプレッドシート

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

Google

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

0グッド

0クリップ

投稿2021/04/22 03:31

GASのメール送信で日付の表記を直したいです。

シート1にメールのテンプレート文章を作成しており、
シート2に必要事項を入力しメール送信ボタンを押すと
シート2の情報がシート1のメール文章に反映されメールを送信できるのですが
(下記画像のようなものを作成しました)

シート1
イメージ説明

シート2
イメージ説明

このままメールを送信するとメール内の日付表記が
【期間】Thu Apr 01 2021 00:00:00 GMT+0900 (日本標準時) ~ Fri Apr 30 2021 00:00:00 GMT+0900 (日本標準時)
このような表記になってしまいます。
これをYY/MM/DDの表記に直せますでしょうか。

スクリプトエディタはこんな感じです。↓

function sendmail(mailTo, mailSubject, mailBody, labels, values) { labels.forEach(function(label, index){ mailSubject = mailSubject.split(`${${label}}`).join(values[index]) mailBody = mailBody.split(`${${label}}`).join(values[index]) }); GmailApp.createDraft( mailTo, mailSubject, mailBody ); } function getTemplate(){ const templateSheet = SpreadsheetApp.getActive().getSheetByName('テンプレート'); const templateDataValues = templateSheet.getDataRange().getValues(); if(templateDataValues.length == 2 && templateDataValues[0].length == 3){ const range = SpreadsheetApp.getActive().getRange('A2:C2') templateSheet.setActiveRange(range); } const templateValues = templateSheet.getActiveRange().getValues(); if(templateValues.length != 1 || templateValues[0].length != 3){ if(templateSheet.getDataRange().getValues()) Browser.msgBox('エラー:「テンプレート」シートで、メールの件名と本文に利用したい行を、いずれか1行だけ選択状態にしてから、再実行してください。'); throw new Error('エラー'); } const sheetName = templateValues[0][0]; const mailSubject = templateValues[0][1]; const mailBody = templateValues[0][2]; return [sheetName, mailSubject, mailBody]; } function sendmailSet(){ const [sheetName, mailSubject, mailBody] = getTemplate(); const sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); const data = sheet.getDataRange().getValues(); const labels = data[0] const emailColumnIndex = labels.findIndex((value)=>value==="email"); for (let i = 1; i < data.length; i++) { // 1行目はヘッダなので1から始める let row = data[i] let mailTo = row[emailColumnIndex]; // 送付先メールアドレス let values = row; if(mailTo && mailTo.length > 0 && mailTo.indexOf("@") > 0){ sendmail(mailTo, mailSubject, mailBody, labels, values); } } } function onOpen(){ const menu=[ {name: "テンプレートでメールを送信", functionName: "sendmailSet"}, ]; SpreadsheetApp.getActiveSpreadsheet().addMenu("メール一括送信", menu); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

YY/MM/DDの表記 だと年のところが2桁ですが、別にスプレッドシート上の日付表示と同じなら良いのですよね?

Utilities.formatDate(date, timeZone, format)で日付箇所だけ 体裁整えるでも良いですが、
一番簡単なのは getDisplayValues()でシート上の表示のまんま取得する方法かと思います。

const data = sheet.getDataRange().getDisplayValues();

getDisplayValues()
https://developers.google.com/apps-script/reference/spreadsheet/range#getDisplayValues()

投稿2021/04/23 01:00

sawa

総合スコア3002

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

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

r7656610

2021/04/23 05:06

できました。いろいろ試してみてもできなかったので、とても助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問