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

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

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

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

解決済

ダイアログボックス表示のタイミングについて

donguriko
donguriko

総合スコア14

Google Apps Script

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

1回答

0評価

1クリップ

332閲覧

投稿2022/04/02 09:53

編集2022/04/03 13:06

前提

リンク先の質問の前工程処理です。→質問リンク

スプレッドシート内に下の2つのシートがあります。
①入力シート
②マージシート

GASで①→②への転記処理と①への「転記済」表示の追記をさせます。
転記処理のコードは全3ステップに分けてコード記載しました。

実現したいこと

3ステップの処理が完了したら、処理が完了した旨の
ダイアログボックスを画面表示させ、ツールユーザーに「OK」ボタンを
クリックしてもらい「作業完了」という動きを想定しています。

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

記載したコードで全3ステップの転記処理は想定どおり動いていますが、
メッセージボックスが出てくるタイミングが自分の想定と違う出方を
しています。

(現)
下の状態でメッセージボックスが出てきます。
処理①のマージシートへの「依頼日」転記は済。
処理②のマージシートへの「識別番号(D列)」~「備考(G列)」転記は未。
処理③の入力シートへの「転記済」表示記載も未
→OKボタンをクリックすると、処理②、③が実行されます。

違和感はあるものの、現在のタイミングでも、処理的には「実害」はない
のですが、今後の知識のために処理③まで完了後のタイミングで
メッセージボックスが出て来ない原因が知りたく質問しました。

a) Browser.msgBox のコードを記載する位置に誤りがありますか?
もしかするとブロックについてまだ理解しきれていないのでは?
という気がしています。

b) 現コードをどのように修正すれば、「実現したいこと」欄に記載の
タイミングでメッセージボックスが表示されるようになりますか?

該当のソースコード

以下にコード全文を記載します。

GAS

function copyToMerge() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const mySheet1 = ss.getSheetByName("入力シート"); const mySheet2 = ss.getSheetByName("マージシート"); //転記が必要な行数(targetRows)を取得 const InMaxRow = mySheet1.getRange(5, 4).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); const targetRows = InMaxRow - 5; console.log("InMaxRow " + InMaxRow); //12が出れば正解 console.log("targetRows " + targetRows); //7が出れば正解 //▼①「依頼日」の転記 //入力シートの依頼日(c列)の値取得 const myDate = mySheet1.getRange("C6").getValue(); console.log("myDate " + myDate); //2022/04/02が出れば正解 //マージシートのデータあり最終行(OutMaxRow)を取得 const OutMaxRow = mySheet2.getRange(mySheet2.getMaxRows(), 4).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); console.log("OutMaxRow " + OutMaxRow); //19が出れば正解 //マージシートの依頼日(c列)にmyDateの内容を転記する。 for (let i = OutMaxRow +1; i <= OutMaxRow +targetRows ; i++) { mySheet2.getRange(i, 3).setValue(myDate); } //▼②「識別番号(D列)」~「備考(G列)」を転記。 //getRange(行,列,●行分,●列分); const myDeta = mySheet1.getRange(6, 4, targetRows, 4).getValues(); console.log("myDeta " + myDeta); const outRange1 = mySheet2.getRange(OutMaxRow +1, 4, targetRows, 4); console.log(outRange1.getA1Notation()); //D20:G26が出れば正解 outRange1.setValues(myDeta); //▼③入力シートに「転記済」表示を追記する。 const outRange2 = mySheet1.getRange(6, 2, targetRows, 1); console.log(outRange2.getA1Notation()); //D20:G26が出れば正解 outRange2.setValue("転記済"); //▼完了Msgの表示 Browser.msgBox("マージシートへの転記処理が完了しました。\\n転記済の表示があれば問題なく転記できています。", Browser.Buttons.OK); }

補足情報(FW/ツールのバージョンなど)

以前から、自分の書いたコードでのメッセージボックスの出てくる
タイミングにずっと違和感を感じており、今後の自分の知識のための
質問となりますので、回答は急ぎません。
回答はお時間がある時で大丈夫です。
本日、2度目の質問、連投となり申し訳ありません。
お忙しいところ申し訳ありませんが、解説をいただけないでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

penguin520

2022/04/02 12:06

どのブラウザでそのような現象が起きるか教えてください。
donguriko

2022/04/03 00:31

penguin520さま 確認が遅くなり申し訳ありません。 非エンジニアで、恥ずかしながらIT知識が乏しいのですが ブラウザはchromeとかのことでよろしいですか? であれば、Microsoft Edge です。
penguin520

2022/04/03 04:01

Microsoft Edge で スプレッドシートを操作するGASは一部正しく動作しません。 どうしても、動作がおかしいと思ったときは、一度 chrome で動作確認してみてください。
donguriko

2022/04/03 04:06

penguin520さま Microsoft Edge だと正しく動かないことがあるのですね。 教えていただきありがとうございます。 同様の事象にあたったらchrome で入り直し? てから、動作確認してみるようにします。 アドバイスありがとうございました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

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