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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

Q&A

解決済

1回答

2793閲覧

GAS セルが空白のままになっている場合にメールを送りたい。

slime_Hoimi

総合スコア13

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

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

0グッド

0クリップ

投稿2020/02/13 04:34

編集2020/02/13 07:30

【B列が空白】になっていて尚且つ、【R列の日付が明日】のものを
【U列に記載のリーダー】へ空白であることを知らせるメールを送信したいです。
(明日訪問しないといけない案件に訪問担当者が割り振られていないよ、という趣旨のメールをリーダーへ送りたい)
【担当者のメールアドレスはV列】に記載があり、
複数シートでそれぞれ1シートに1担当者がついています。

下記コードをあらゆるサンプルから写経しながら書いてみました。
エラーは無く実行はできているのですが、メールが送られてきません。

ぐちゃぐちゃなコードで恐れ入りますが、ご教示お願いいたします。

GAS

1function SendEmail() { 2 3//R列の日付が明日のものを判定 4day.setDate(day.getDate()+2);//明日の日付を取得 5var tomorrow = strttime(day); 6 for(var i=1; i <= range; i++){ 7var cellRange = sheet.getRange(i,18);//R列を指定 8 if(tomorrow == cellRange);//R列に記載の日付と一致しているかを判定 9 10 11//B列が空白のものを判定 12var SS = SpreadsheetApp.getActiveSheet(); 13var getsheets = ['シート1',"シート2"]; 14var range = getsheets.getRange("B2:B").getValues(); 15 for(var i=1; i <= range; i++){ 16 var cell = sheet.getRange.(i,2);//B列が空白か? 17 if(cell.isBrank()); 18 } 19 20//必要情報の取得 21var valuee = getsheets.getDateRange().getValues(); 22 23for(var i = 1;i<valuee.length;i++); 24 var title = valuee[i][1];//リーダー名 25 var title1 = valuee[i][21];//宛先 26 var title2 = valuee[i][17];//日付 27 var title3 = valuee[i][18];//時間 28 var title4 = valuee[i][2];//管理番号 29 var title5 = valuee[i][3];//案件名 30 31//メールの設定 32 var style = '<font face="Sans Serif">'; 33 var subject = "担当者記載のお願い"; 34 var cc = '@gmail'; 35 36//本文設定 37 var item = [] 38 item.push(style + title + "さん<br><br>"); 39 item.push(style + "お疲れ様です。<br>"); 40 item.push(style + "訪問担当者の記載がありません。<br>"); 41 item.push(style + "早急に担当割り振りをお願いいたします。<br><br>"); 42 item.push(style + "◆詳細<br>"); 43 item.push(style + "【時間】" + title2 + title3 +"<br>"); 44 item.push(style + "【案件】" + title4 + ":" + title5 + "<br><br>"); 45 item.push(style + "よろしくお願いいたします。<br>"); 46 47 48//詳細設定 49 var options = {}; 50 options.from = "@gmail"; 51 options.cc = cc 52 options.name = "担当割り振り係"; 53 options.htmlBody = item.join("\n"); 54 MailApp.sendEmail(title1,subject,"",options); 55 56 57}

よろしくお願いします。

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

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

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

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

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

macaron_xxx

2020/02/13 05:19

>下記コードをあらゆるサンプルから写経しながら書いてみたので添削をお願いします。 コードレビューしてほしいなら他でどうぞ。 なにがわからないのか明確にしてください。
slime_Hoimi

2020/02/13 05:32

コードが合っているのか自体が丸々分からないです。。。 書ききれていないので動作確認はできないかな…と思っているので試すことすらできておらず… 後学のため添削踏まえ優秀な方に 「こう書けば望んでいることができるよ」「望んでいることをするにはここが違うよ」 と教えていただきたいと思ったのですが、 他に添削してくれるサイトがあるのですか? 少なくともテラテイルはそういう場だと認識しています。違ってたらすみません。 何が分からないかもわからないような無知なので質問の仕方も悪く申し訳ありません。
macaron_xxx

2020/02/13 05:39

https://teratail.com/help/avoid-asking >コードをください・デバッグしてください等の丸投げの質問 何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。 まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。
slime_Hoimi

2020/02/13 07:35

失礼しました。おっしゃる通り甘ちゃんの考え方をしていました。 わからないところをひとつずつ確認して改善を重ねます。
guest

回答1

0

ベストアンサー

javascript

1/* 2準備 3 表示メニューから「マニフェスト ファイルを表示」にチェックをつけます。 4 appsscript.jsonに `"runtimeVersion":"V8"` を追加します。 5//```json: 例 6{ 7 "timeZone": "Asia/Tokyo", 8 "dependencies": { 9 }, 10 "exceptionLogging": "STACKDRIVER", 11 "runtimeVersion":"V8" 12} 13//``` 14* */ 15const q241089 = ()=> { 16 const now = new Date(); 17 if(isHoliday(now)) return; 18 SpreadsheetApp.getActive().getSheets().forEach(sendNotifyForSheet); 19} 20const sendNotifyForSheet = sheet => { 21 const today = toDateString(new Date()); 22 const target = sheet.getDataRange().getValues().filter(e => e[getColNumber("B")] === "" && toDateString(e[getColNumber("R")]) === today); 23 target.forEach(e=> GmailApp.sendMail( 24 e[getColNumber("V")], 25 "担当者記載のお願い", 26 createMessage(e[getColNumber("U")],toDateString(e[getColNumber("R")]),e[getColNumber("S")],e[getColNumber("C")],e[getColNumber("D")]), 27 { 28 name : "担当割り振り催促係", 29 from : "", 30 cc : "" 31 } 32 )); 33} 34const isHoliday = date => !isWeekday(date) || hasEvent('ja.japanese#holiday@group.v.calendar.google.com', date); 35const isWeekday = date => date.getDay() > 0 && date.getDay() < 6; 36const hasEvent = (calendarId, date) => CalendarApp.getCalendarById(calendarId).getEventsForDay(date).length > 0; 37const toDateString = date => Utilities.formatDate(date, "JST", "yyyyMMdd"); 38const getColNumber = (alpha) => "ABCDEFGHIJKLMNOPQLSTUVWXYZ".indexOf(alpha.toUpperCase()); 39 40const createMessage = (name, date, time, caseNo, caseTitle) => `${name}さん 41 42お疲れさまです。 43訪問担当者の記載がありません。 44早急に担当割り振りをお願いいたします。 45 46◆詳細 47【時間】${date}${time} 48【案件】${caseNo}:${caseTitle} 49よろしくお願いいたします。 50`;

投稿2020/02/13 09:08

papinianus

総合スコア12705

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

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

slime_Hoimi

2020/02/13 12:16

いつもありがとうございます! 今PCが触れなくて詳しく拝見できないのですが先に回答のお礼をさせてください。 ほんとうにいつもすごいです(;_;) 一生懸命調べて書いたつもり(書けたつもり)でしたが、こんなに短く綺麗に出来てしまうのですね! 毎度勉強不足を痛感させてもらいありがとうございます!
papinianus

2020/02/13 13:02

動作確認してません。 明日の、でしたね。今日が期限のものを探してしまっています。
slime_Hoimi

2020/02/23 13:23

遅くなりすみません;; なんとかできました!! 大変助かりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問