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

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

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

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

Google Apps Script

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

Google

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

Q&A

解決済

1回答

1000閲覧

GAS:特定のセルが変更された場合のチェックボックス操作に関して

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

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

Google Apps Script

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

Google

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

0グッド

1クリップ

投稿2022/06/03 04:27

実現したいこと

A2~A6までテキストが入力されています。
そのテキストが変更された場合、C2~C6のチェックボックスからチェックを外したいです。
(A列のセルが変更されてない場合は、チェックついたまま)

下記で全て外す事はできたのですが、セルが変更された場合という条件の書き方が分からず困っております。

またC2~C6の全てにチェックがついた時に別のfunctionを実行したいのですが
その確認方法もご教授いただけますと幸いです。

該当のソースコード

GAS

1function checkbox( check ){ 2 const ss = SpreadsheetApp.getActiveSpreadsheet() 3 const ws = ss.getSheetByName("sheet1") 4 ws.getRange(2,3,6).setValue(check) 5} 6 7function UnCheckAll(){ 8 checkbox(false) 9} 10

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

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

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

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

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

YAmaGNZ

2022/06/03 04:37

調査されたのでしょうか? 「GAS 特定のセルが変更されたら」など検索したらいろいろと参考になるものが出てくると思いますが
YAmaGNZ

2022/06/03 05:28

どこまでやって何が分からないのか具体的に書かないと適切な回答はつきにくいでしょう。 答えるとしたら参考にされたところと同じような回答になる可能性が高いでしょう。 なので、「こういうふうに書いてこうなりました、この文が分かりません」といった感じで具体的な質問にすべきかと思います。 現状ですと、推奨されない「丸投げの質問」ととらえられてしまいます。
退会済みユーザー

退会済みユーザー

2022/06/03 05:42

人生の貴重なお時間さいてまでご指摘いただきありがとうございます。 今後の参考にさせていただきます。
guest

回答1

0

ベストアンサー

gs

1// 該当セルの行列とセルの値 2let a2_6CellStr = [ 3 '2,1' 4 , '3,1' 5 , '4,1' 6 , '5,1' 7 , '6,1' 8] 9 10let ss = SpreadsheetApp.getActiveSpreadsheet() 11let sheetName = 'シート31' 12let sheet = ss.getSheetByName(sheetName) 13 14function onEdit(e) { 15 16 let editSheet = e.source.getActiveSheet().getName() 17 18 // シート31 以外が編集された場合、以降の処理を行わない 19 if (sheetName !== editSheet) return 20 21 // 編集された行、列 22 let editRow = e.range.getRow() 23 let editCol = e.range.getColumn() 24 25 // A2~A6セルの場合 26 if (a2_6CellStr.filter(e => { if(e == `${editRow},${editCol}`) return true }) != "") { 27 28 // 入力された値 29 let editValue = e.value 30 // 入力される前の値 31 let oldEditValue = e.oldValue 32 33 if (oldEditValue != editValue) { 34 // 該当セルが変更された場合 35 sheet.getRange(`C${editRow}`).setValue(false) 36 } 37 } 38 39 // C2~C6セルのチェック値 40 let c2_6CellValue = [ 41 sheet.getRange("C2").getValue() 42 , sheet.getRange("C3").getValue() 43 , sheet.getRange("C4").getValue() 44 , sheet.getRange("C5").getValue() 45 , sheet.getRange("C6").getValue() 46 ] 47 48 // C2~C6セルのチェック 49 if (c2_6CellValue.filter(e => { if (e) return true }).length == 5) { 50 // 別の処理 51 test() 52 } 53} 54 55function test() { 56 sheet.getRange("D6").setValue("全チェック付きで、別処理実行") 57}

こんな感じでしょうか?
A2~A6セルの値は不明だったので「A2〜A6」で定義しています。
C2〜C6セルのチェック確認については、どのような仕様かわからないので、「シート31」であれば毎回起動する状態です。


追記

セルA2が変更された → セルC2のチェックを外すを
A6 → C6まで対応しました。

投稿2022/06/03 07:31

編集2022/06/03 10:00
k.a_teratail

総合スコア845

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

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

退会済みユーザー

退会済みユーザー

2022/06/03 10:04 編集

詳細が不確かな中、ご回答ありがとうございます。 A列は固定ではなく、日付・氏名・連絡先などが入力されております。 それを全て確認したら、作業者がC列にチェックをつけるという流れです。 そのため、C列のチェックが全てついている状態を作業開始とします。 そこからA列が変更された際に、自動でC列のチェックを外し 作業者が確認したらチェックをつけ そのチェックが全てついたのを検知し、別のfunction(Gmailの下書き保存)を実行したい という要望になります。 いただいた内容で対応はできたのですが A列の1つが変更されたら、C列の全てチェックが外れてしまったので A2が変更されたらC2のみチェックが外れる A3が変更されたらC3のみチェックが外れる A4が変更されたらC4のみチェックが外れる A5が変更されたらC5のみチェックが外れる A6が変更されたらC6のみチェックが外れる と、個別に定義する事は可能でしょうか? また let a2_6CellStr でA列を確認する際に 取得したテキストから変更されたかを判断する事は可能でしょうか? 例えば、取得したA3が 2022/6/3 で違う日付に変更された事をGASで判断はできるでしょうか。 お手数をおかけしますが、ご確認よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2022/06/03 10:47

ご丁寧にありがとうございます。 こちらで対応できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問