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

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

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

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

Google フォーム

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Q&A

解決済

1回答

1055閲覧

GASでスプレッドシートのセルに入っている日付を見やすい形式にしてメールで送りたい。

tanasuke

総合スコア0

Google スプレッドシート

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

Google フォーム

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

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

0グッド

0クリップ

投稿2021/04/21 03:48

前提・実現したいこと

社内申請・承認システムを作っております。

申請者は指定のグーグルフォームから送信することで、承認者にスプレッドシートのURLと申請の明細がメールで通知されます。
承認者はフォームの回答が記録されるスプレッドシートを確認し、該当する行のチェックボックスにチェックを入れると、チェックした行の情報がメールで他の部署に送信される、というものです。

承認者から他の部署へメールを送る時、日付が
Thu Apr 29 2021 00:00:00 GMT+0900 (日本標準時)
という形式になるので、
2021/04/29
という形式にして見やすくしたいです。

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

申請者から承認者へのメールでは
2021/04/29
という形式で送られるのですが、
承認者から他の部署へのメールでは
Thu Apr 29 2021 00:00:00 GMT+0900 (日本標準時)
となってしまいます。

該当のソースコード

1.申請者から承認者へフォームから送信したときに通知されるソースコード

function sendMessage(e) {

var [timeStamp, email, apply, change, announce, delivery, company, person, title, address, tel, sender, attachment] = e.values;

const recipient = 'xxxxxxxxxxxxx@xxxxxxxx.co.jp'; //承認者のメールアドレス
const subject = '〇〇〇のお知らせ';
let body = '';
body += '〇〇〇を申請致します。\n\n';
body += ・申請者: ${apply}\n;
body += ・人事異動: ${change}\n;
body += ・人事異動発令日: ${announce} \n;
body += ・祝電お届け日: ${delivery}\n;
body += ・取引先名: ${company} \n;
body += ・受取人: ${person} \n;
body += ・役職名: ${title} \n;
body += ・住所: ${address} \n;
body += ・電話番号: ${tel} \n;
body += ・差出人: ${sender} \n;
body += ・添付資料: ${attachment} \n\n;
body += '以下URLからスプレッドシートをご確認いただき、内容に間違いがなければチェックボックスにチェックを入れてご承認お願い致します。\n';
body += 'https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxx'; //スプレッドシートのURL

GmailApp.sendEmail(recipient, subject, body);

}

2.承認者がチェックを入れ、他の部署へチェックを入れた行の情報がメールで送られるソースコード

function showCheckboxInfo() {
var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
var myCell = mySheet.getActiveCell();
var rule = myCell.getDataValidation();
if (rule != null) {
var criteria = rule.getCriteriaType();
var status = myCell.getValue()
if ( criteria == 'CHECKBOX' && status == true) {
var row = myCell.getRow();
var result = Browser.msgBox('チェックボックスが押されました。メールを送信しますか?', Browser.Buttons.OK_CANCEL);
if(result == 'ok'){
sendMail(row);
} else if (result == 'cancel'){
mySheet.getRange(row,14).uncheck(); // チェックを外す
}
}
}
}

function sendMail(row) {

//スプレッドシートAppを呼び出し
var ss = SpreadsheetApp.getActiveSpreadsheet();
//0番目のシートを取得してsheetに格納
var sheet = ss.getActiveSheet();

  //選択されているアクティブなセルを取得
var range = sheet.getActiveCell();
//アクティブセルの行数をrowへ格納
var row = range.getRow();

const recipient = 'xxxxxxxxxxx@xxxxxxxx.co.jp'; //他の部署のメールアドレス
const subject = '〇〇〇のお知らせ';
const apply = sheet.getRange(row, 3).getValue();
const change = sheet.getRange(row, 4).getValue();
const announce = sheet.getRange(row, 5).getValue();
const delivery = sheet.getRange(row, 6).getValue();
const company = sheet.getRange(row, 7).getValue();
const person = sheet.getRange(row, 8).getValue();
const title = sheet.getRange(row, 9).getValue();
const address = sheet.getRange(row, 10).getValue();
const tel = sheet.getRange(row, 11).getValue();
const sender = sheet.getRange(row, 12).getValue();
const attachment = sheet.getRange(row, 13).getValue();
var body = '〇〇様\n\n〇〇〇をお送りします。〇〇〇をお願い致します。\n\n';
body += '・申請者:' + apply + '\n';
body += '・人事異動:' + change + '\n';
body += '・人事異動発令日:' + announce + '\n';
body += '・祝電お届け日:' + delivery + '\n';
body += '・取引先名:' + company + '\n';
body += '・受取人:' + person + '\n';
body += '・役職名:' + title + '\n';
body += '・住所:' + address + '\n';
body += '・電話番号:' + tel + '\n';
body += '・差出人:' + sender + '\n';
body += '・添付資料:' + attachment + '\n';

GmailApp.sendEmail(recipient, subject, body);
}

試したこと

スプレッドシートの日付が入る列(人事異動発令日、祝電お届け日)の書式を書式なしテキストにしてみましたが、
フォームから新しい申請があるとその行は日付形式になってしまいました。

また、全くの初心者のため、ネットに公開されている様々なGASのコードを切り貼りし、日付を文字列に変換するコードも参照しましたが、どこにどうやって書けばいいか分かりませんでした。フォームからの申請~他の部署へのメール送信までは動作確認できておりますが、日付の表示がどうしてもうまくいかず、質問させていただきました。宜しくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

2つ目のソースコードの
const announce = sheet.getRange(row, 5).getValue();
const delivery = sheet.getRange(row, 6).getValue();
を削除して、

var announce = sheet.getRange(row, 5).getValue();
announce = Utilities.formatDate(announce, 'JST', 'yyyy/MM/dd');
var delivery = sheet.getRange(row, 6).getValue();
delivery = Utilities.formatDate(delivery, 'JST', 'yyyy/MM/dd');
とすることで、表示したい形式にすることができました。

投稿2021/04/21 07:23

tanasuke

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問