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

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

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

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

Google Apps Script

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

4077閲覧

GASを使って複数の条件を満たした行を一気に非表示にしたいです!

salaeru

総合スコア1

Google スプレッドシート

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

Google Apps Script

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2021/04/22 03:39

前提・実現したいこと

GASを使って
シートの範囲内でその行の2つの列に特定の文字が入力されている場合(and)その行を非表示にする
ということを実現したいです。よろしくお願いします。   

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

全く反応すら出てきませんでした...

該当のソースコード

GAS

1function MyhideRow() { 2 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 5 var sh = ss.getSheetByName('管理表'); 6 7 var status = sheet.getRange(6,4,sheet.getLastRow() - 5).getValues(); 8 9 var souhu = sheet.getRange(6,23,sheet.getLastRow() - 5).getValues(); 10 11}

試したこと

見出しが5行あり、D列の”ステータス”とW列の”送付”の情報を取得できた(?)あとに

IFで"status" == "OK" && "souhu" == "TRUE" として

FORで繰り返しhideRowするイメージまではあるんですが

ここから調べても分からなく、どうすれば良いのか状態です。

何卒お手柔らかにお願い致します。

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

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

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

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

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

sawa

2021/04/23 01:05 編集

イメージの通りですが、そのままコーディングできないのであれば一歩ずつやってみてはいかがでしょうか? getValues()よりもgetValue()で一つずつ実行するほうが、最初のうちは分かりやすいです。 以下のようなステップで、自力でもう少し進められると思います。 1. 6行目だけ非表示にするコードを書く 2. IF文を加え、6行目が条件に合致するときだけ非表示にするコードに修正 3. for文 で6行目から最終行まで繰り返すコードに修正 → 完成 もちろん正解のコードを回答してくれる人が登場するまで待つってのもアリですが。
salaeru

2021/04/23 01:35

御返信ありがとうございます! 解決までの道筋すら不透明な状態でしたので、ステップを書いて下さるのは本当にありがたいです。 ただ、個人の練習問題ではなく社内で使うため(安請け合いした自分が悪い)自力で進めてみつつ回答の方も待ちたいと思っております…! やってみます!ありがとうございますm(_ _)m
guest

回答1

0

ベストアンサー

実際に試したわけでは無いですが、こんなイメージでしょうか。

JavaScript

1function MyhideRow() { 2 var ss = SpreadsheetApp.getActiveSpreadsheet(); 3 var sh = ss.getSheetByName("管理表"); 4 5 var rowCount = sheet.getLastRow() - 5; 6 var status = sheet.getRange(6, 4, rowCount).getValues().flat(); 7 var souhu = sheet.getRange(6, 23, rowCount).getValues().flat(); 8 9 for(let row = 0; row < rowCount; row++) { 10 if(status[row] === "OK" && souhu[row] === "TRUE") { 11 sheet.hideRows(row + 1); 12 } 13 } 14}

投稿2021/05/10 05:38

draq

総合スコア2573

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

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

salaeru

2021/05/10 06:22

回答ありがとうございます!! ただ、ごめんなさい....! GWまえに「やっぱり隠すじゃなくて別シートに移動にしてくれ」と言われて、GW中に勉強して昨日やっと完成したところでした.... ただ、こちらのコードをもとに隠す機能も追加できそうなので、本当に勉強になりました!! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問