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

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

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

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

Q&A

解決済

1回答

11917閲覧

配列から空のデータを除外したい

rimmy

総合スコア2

Google Apps Script

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

0グッド

0クリップ

投稿2021/03/18 05:53

編集2021/03/18 05:54

前提・実現したいこと

現在GASで、その日の作業をメールで通知するようなシステムを作成しています。

特定の範囲にあるデータをメールで以下のように通知させたいのですが、
配列の空データがあると、【作業1】と【作業2】の末尾が変にスペースが開いてしまい、
イメージするようなメール表記にすることができません。
◆メールイメージ
--------------------------------
本日の作業をお知らせします。

【作業1】
①追加1
②追加2
③追加3

【作業2】
①削除1
②削除2

--------------------------------

スプレッドシート上では以下のような構造で、
内容や個数が日時で増減するような仕様です。

作業1作業2
追加1削除1
追加2削除2
追加3

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

【作業1】~追加3だけ入った配列が必要なのですが、追加3以降にある空白セルの文も格納されています。
※該当ソースコードのbodyAdd出力結果↓

[【作業1】 , 追加1 , 追加2 , 追加3 , , , , undefined ]

該当のソースコード

GAS

1const sheet = ss.getSheetByName('作業一覧'); 2var tableAdd = sheet.getRange(5,20,36).getValues(); //作業1のデータ取得 3 4var bodyAdd = []; 5 6 //作業1で必要な情報を1件ずつ取得 7 for(var i = 0; i <= tableAdd.length; i++){ 8  bodyAdd[i] = tableAdd[i] + '\n'; //この時点までに空の配列を削除しておきたい 9 } 10 11

試したこと

ネット上であったfilterを使用する方法や、
If関数でnullじゃないものだけfor文でまわす方法などを参考に試しましたが、
空の配列を削除することができませんでした。

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

参考サイト:
https://gray-code.com/javascript/remove-empty-element-for-array/
https://www.nyamucoro.com/entry/2018/05/03/182609

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

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

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

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

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

guest

回答1

0

ベストアンサー

tableAddをログ出力すると 1列だけ getValuesしてるので、
[ [ '作業1' ],
[ '追加1' ],
[ '追加2' ],
[ '追加3' ],
[ '' ],
[ '' ],
.
.
]
こんな感じの二次元配列になってるはずです。

参考にされたサイトに記載のある array.filter(v => v) の応用になりますが、今回のようなケースは以下のような書き方で空要素の削除ができます。

var tableAdd2 = tabelAdd.filter(v => v[0]);

投稿2021/03/18 13:39

sawa

総合スコア3002

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

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

rimmy

2021/03/19 00:18

sawa様 試してみたら解決できました! ご教示いただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問