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

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

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

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

Google Apps Script

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

Q&A

解決済

2回答

6838閲覧

チェックボックスが入った行を非表示にしたい。

shoooooooyann

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2022/12/10 03:30

前提

スプレッドシートで営業の案件表を作っています。

実現したいこと

スプレッドシートで、
J列、K列にチェックボックスを準備し、
どちらか一方でもチェックが入った行が自動で非表示になる設定がしたい。

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

構文エラー: SyntaxError: Unexpected identifier 行: 31 ファイル: 買増可否.gs

該当のソースコード

var CHECKBOX_COLUMN = 10; // チェックボックスの列 var CHECKBOX_COUNT = 1001; // チェックボックスの数 var HIDDEN_FIELD_START = 2; // 何行目から消すのか var HIDDEN_FIELD_END = 1001; // 何行目まで消すのか // スプレッドシートの値が変更された時に発火 function changeEvent() { var sheet = SpreadsheetApp.getActiveSheet(); var activeCell = sheet.getActiveCell(); if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合 checkBoxEvent(sheet); } } // チェックボックスのチェック状態に合わせて表示・非表示を切り替える function checkBoxEvent(sheet) { var rows = sheet.getRange(1, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues(); hiddenFields(sheet); for (var i = 0; i < rows.length; i++) { if (rows[i][0] === true) { var showRows = sheet.getRange(i + 1, CHECKBOX_COLUMN + 1).getValue().split(','); for (var j = 0; j < showRows.length; j++) { if(sht.getRange(i, 10).getValue()){ // チェックボックスの1個右のセルの値に記載されている行数を表示する } } } } // 非表示行エリアを全非表示にする function hiddenFields(sheet) sheet.hideRows(HIDDEN_FIELD_START, HIDDEN_FIELD_END - HIDDEN_FIELD_START + 1); }

試したこと

他の記事など見て試しましたがうまくいかず。。。
お力を借りたいと思っております。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

YAmaGNZ

2022/12/10 04:58

「うまくいかない」とはどうなるのでしょうか?
shoooooooyann

2022/12/10 05:32

ご確認ありがとうございます。 GASの画面で保存が出来ず、該当のエラーが出てしまします。
guest

回答2

0

ベストアンサー

J列、K列のチェックボックスにチェックを入れたときに、その行を非表示にしたいなら、
下記のコードでいいでしょう。

JavaScript/GoogleAppsScript

1function onEdit(e){ 2 // 編集のあったシート 3 const sheet = e.source.getActiveSheet(); 4 // 編集したセル 5 const cell = e.source.getActiveCell(); 6 // セルの列番号 7 const col = cell.getColumn(); 8 if (sheet.getName() == "シート1" && col == 10 || col == 11) { 9 if(cell.getValue()){ 10 sheet.hideRow(cell); 11 } 12 } 13}

"シート1" の部分はチェックボックスあるシート名にしてください。

投稿2022/12/10 13:34

hatena19

総合スコア34343

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

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

shoooooooyann

2022/12/11 05:04

ご回答ありがとうございます。 こちらで試してみましたが、下記エラーが出てしまいました。 エラー TypeError: Cannot read properties of undefined (reading 'source') こちら分かりますでしょうか? 入力したコードは下記になります。 function onEdit(e){ // 編集のあったシート const sheet = e.source.getActiveSheet(); // 編集したセル const cell = e.source.getActiveCell(); // セルの列番号 const col = cell.getColumn(); if (sheet.getName() == "買増確認(20221209現在)" && col == 10 || col == 11) { if(cell.getValue()){ sheet.hideRow(cell); } } }
hatena19

2022/12/11 05:33

こちらのサンプルで問題なく動作しているんですけどね。なんでだろう? 下記ではどうでしょう。 function onEdit(e){ const sheet = SpreadsheetApp.getActiveSheet(); const cell = sheet.getActiveCell(); const col = cell.getColumn(); if (sheet.getName() == "買増確認(20221209現在)" && col == 10 || col == 11) { if(cell.getValue()){ sheet.hideRow(cell); } } }
shoooooooyann

2022/12/12 04:25

ありがとうございます!こちらで動作しました!! 大変助かりましたm(___)m
guest

0

{ } が2箇所抜けているようです。

以下、{}を追記したソースコードとなります。

var CHECKBOX_COLUMN = 10; // チェックボックスの列 var CHECKBOX_COUNT = 1001; // チェックボックスの数 var HIDDEN_FIELD_START = 2; // 何行目から消すのか var HIDDEN_FIELD_END = 1001; // 何行目まで消すのか // // スプレッドシートの値が変更された時に発火 function changeEvent() { var sheet = SpreadsheetApp.getActiveSheet(); var activeCell = sheet.getActiveCell(); if (activeCell.getColumn() == CHECKBOX_COLUMN){ // チェックボックス列の値が変更された場合 checkBoxEvent(sheet); } } // // チェックボックスのチェック状態に合わせて表示・非表示を切り替える function checkBoxEvent(sheet) { var rows = sheet.getRange(1, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues(); hiddenFields(sheet); for (var i = 0; i < rows.length; i++) { if (rows[i][0] === true) { var showRows = sheet.getRange(i + 1, CHECKBOX_COLUMN + 1).getValue().split(','); for (var j = 0; j < showRows.length; j++) { if(sht.getRange(i, 10).getValue()){ // チェックボックスの1個右のセルの値に記載されている行数を表示する } } } } } // // 非表示行エリアを全非表示にする function hiddenFields(sheet) { sheet.hideRows(HIDDEN_FIELD_START, HIDDEN_FIELD_END - HIDDEN_FIELD_START + 1); }

投稿2022/12/10 06:27

dtakkiy

総合スコア88

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問