質問するログイン新規登録

Q&A

解決済

1回答

499閲覧

Google Apps Script セルの結合を無効にし、警告を出したい

Manabu_gas

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

0グッド

1クリップ

投稿2023/07/04 10:28

編集2023/07/04 11:28

0

1

実現したいこと

アクティブなスプレッドシート上の特定のシート内で、
セルの結合操作(マウス操作、ショートカット、マクロ問わず)が実行されたとき

・実行を無効にする
・「セルの結合は禁止されています。」といったメッセージボックスを表示する
(ボタンは[OK]のみで可)

「セル結合の実行」をトリガとするIf文の組み方がわかりません。
恐縮ですが、どなたかご教授いただければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

編集された時のシンプルトリガーで編集された領域がe.rangeで取得できます。
その領域に対してisPartOfMergeで結合されているか判断し、結合されていた場合に
結合を解除+メッセージの表示を行えばよろしいかと思います。

セルが変更されたと通知される領域と実際に結合された領域が異なるため、そのまま結合解除しても範囲が違うため結合の解除が行われません。
なので、getMergedRangesにて実際に結合されている領域を取得し、その領域に対してbreakApartで結合解除を行う形となります。

ただ、元から結合されている場合でも反応しますので、除外する領域がある場合はif文で判断するようにしてください。

また、スクリプトで変更された場合などには対応できません。

JavaScript

1function onEdit(e) { 2 // 編集された領域が結合されているか判断する 3 if (e.range.isPartOfMerge()) { 4 let merged_ranges = e.range.getMergedRanges(); 5 6 for(let mrange of merged_ranges){ 7 // セルの結合を解除する 8 mrange.breakApart(); 9 } 10 11 SpreadsheetApp.getUi().alert('セルの結合は禁止されています。'); 12 } 13} 14

投稿2023/07/04 11:36

編集2023/07/04 11:37
YAmaGNZ

総合スコア10702

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

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

Manabu_gas

2023/07/04 13:29

ありがとうございます! isPartOfMergeを使って実装したところ、問題なく動作しました。 結合解除の手順作成も手こずっていたので助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問