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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

212閲覧

メッセージBOXの次の段階

hitct2460

総合スコア8

Google スプレッドシート

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

Google Apps Script

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

0グッド

2クリップ

投稿2023/05/27 14:47

コードをここまで書きましたが次の内容を実現したいとき、書き方がわかりません。
どなたかご教授願います。

①3行目、「本文を入力」部分をAという名のシートのA1セルの文字列にしたい。
②26行目、NOの場合はなにもしたくないのでこのままでよいかどうか
③28行目、キャンセルの場合、21行目と23行目で書かれていることをしたい。

GAS

1function myFunction() { 2 3 var res = Browser.msgBox("下記の内容で送信しますか?", "本文を入力", Browser.Buttons.YES_NO_CANCEL); 4 5 if (res == "yes") { 6 7 var spreadsheet = SpreadsheetApp.getActive() 8 //今のスプレッドシートを取得 9 10 const sheet = SpreadsheetApp.getActive().getSheetByName('MailLOG'); 11 //メールを送るためにシート名「MailLOG」を開く 12 13 const recipient = sheet.getRange(2, 2).getValue(); 14 //送信先は2行目2列目、つまりB2 15 const subject = sheet.getRange(2, 4).getValue(); 16 //件名は2行目4列目、つまりD2 17 const body = sheet.getRange(2, 5).getValue(); 18 //本文は2行目5列目、つまりE2 19 GmailApp.sendEmail(recipient, subject, body); 20 //GMailで送信先、件名、本文を転記 21 const sheet2 = spreadsheet.getSheetByName('PSD'); 22 //送信後、シート名「PSDを開く」 23 sheet2.getRange(40, 29, 9, 1).clearContent(); 24 //40行目29列目、つまりAC40から9行目1列目、つまりAC40からAC48のセル内容を削除 25 26 } else if (res == "no") { 27 //noボタンが押された時の動作 28 } else if (res == "cancel") { 29 //Cancelボタンが押された際の動作 30 31 } 32 33}

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考例としては、次のようになります。

○ 1度しか使わない値は、変数に代入せずに直接記述しています。(シートの取得)
○ 逆に1度変数に取得した値は、それ以降も変数として記述しています。(Spreadsheet.getActive())
○ Browser.msgBoxの代わりにui.alertとしています。(Googleの勧めに従い)
○ getRangeの引数の値をA1形式で記述しています。(変数も使われていないので)
○ getValueでB2:E2のセル範囲の値を3回に分けて変数に代入しているのを1度にまとめています。
○ PSDという名前のシートのAC40:AC48のセル範囲の値の消去を、押されたボタンがYESのときだけでなくCANCELのときにも実行するようにしています。
○ 押されたボタンがNOのときは何もしないので何も記述していません。

JavaScript

1function myFunction() { 2 const spreadsheet = SpreadsheetApp.getActive(); 3 const ui = SpreadsheetApp.getUi(); 4 const response = ui.alert("下記の内容で送信しますか?", spreadsheet.getSheetByName('A').getRange('A1').getValue(), ui.ButtonSet.YES_NO_CANCEL); 5 if (response == ui.Button.YES) { 6 const [recipient, , subject, body] = spreadsheet.getSheetByName('MailLOG').getRange('B2:E2').getValues().flat(); 7 GmailApp.sendEmail(recipient, subject, body); 8 } 9 if (response == ui.Button.YES || response == ui.Button.CANCEL) { 10 spreadsheet.getSheetByName('PSD').getRange('AC40:AC48').clearContent(); 11 } 12}

投稿2023/05/27 16:29

編集2023/05/27 16:46
YellowGreen

総合スコア731

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

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

hitct2460

2023/06/20 00:45

すごく助かりました。ありがとうございます。
YellowGreen

2023/06/20 00:57

お役に立てたのなら良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問