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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

648閲覧

GAS CSVから「。」が4回付いたら改行するというコードを書きたい&文字列のコンマと区分子のコンマを分けたい

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/07/31 11:55

編集2019/07/31 12:13

初心者です。
なんとかCSVの読み込みはできております。
all_csvの中に以下CSVのデータが入っているとします。

CSVイメージー all_csv

これは1回目のまるがついています。,これは2回目のまるがついています。,これは3回目のまるがついています。,これは4回目のまるがついていま。,これは5回目のまるがついています。,これは6回目のまるがついています。,これは7回目のまるがついています。,これは8回目のまるがついています。,これは9回目のまるがついています。,これは10回目のまるがついています

#やりたいこと その1

all_csvの中身を順番に読み4つの「。」があったら改行する というロジックを入れたいです。以下のようなイメージです。なお。の数はそれぞれ0個の場合もあるし100個以上ある場合もあります。

これは1回目のまるがついています。,これは2回目のまるがついています。,これは3回目のまるがついています。,これは4回目のまるがついていま。

これは5回目のまるがついています。,これは6回目のまるがついています。,これは7回目のまるがついています。,これは8回目のまるがついています。

これは9回目のまるがついています。,これは10回目のまるがついています

#ためしたこと

all_csv// <-- 全てのデータが入っている for(var i = 0; i <= 99999; i++) {    target_csv += "\n"; // <-- 改行を加える }

#やりたいこと その2

marumaruという変数に「これは1回目のまるがついています。」というデータで中にカンマが入っていたとします。具体的には「これは,1回目の,まるが,ついています。」と入っていたとします。その場合csvがずれてしまい困っています。

marumarub = "これは,1回目の,まるが,ついています。"

この時にカンマをカウントせずに

marumarub = "これは1回目のまるがついています。"

と表示させる為にsplit関数をつかえばいいのでしょうか?調べましたが",(?=([^"]"[^"]")[^"]$)"の部分が理解できず質問させて頂きました。

var csv_sample = '"学校","我が子の名前="健太,綾香"","特機","鷲見","誕生日"';
var csvvalue = csv_sample.split(",(?=([^"]"[^"]")[^"]$)", -1);

以下を参考にしました。
https://teratail.com/questions/41598

追記 以下コメントがありましたが以前本質問の回答がわかりません。

var lines = text.split(lined);

初めに改行で split しているのでセル値内の改行もsplitしてしまっています。
"" で括られた中にはどんな文字でも入れる事が出来ます(エスケープされていない " を除く)ので split で行を分割する実装は基本的にまずいです。
" のエスケープ処理がなく、 ", が後続すると自動的にセル値として閉じる仕様なので ", をセル値に含める事もできないようです。
console.log(JSON.stringify(jQuery.csv()('"a1"",a2","b1\r\nb2"'))); // [["a1"","2","b"],["2"]]

宜しくお願いします。

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

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

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

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

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

papinianus

2019/07/31 22:14

やりたいことその2の困りポイントが理解できません。 カンマ区切りではなく、句点区切りのデータということですか? csvがずれるというのをデータと期待する形と現状の3点で表現可能ですか?
退会済みユーザー

退会済みユーザー

2019/08/01 05:04

拙い説明ですみません。このcsvはユーザが入力した値が入ります。その為、カンマが入力されてしまうケースが多々あります。例えば「198,000は安い。」や「だって,しょうがないよね!だって,だって。」など。 この場合現状だとcsvが 198 , 000は安い。 とわかれてしまいます。 だって , しょうがないよね!だって , だって。 とわかれてしまいます。 そこでユーザから入力されたカンマは無視して 「198,000は安い。」 「だって,しょうがないよね!だって,だって。」 という内容をcsvに吐きだしたいという事です。いつも丁寧にありがとうございます。papinianusさん
papinianus

2019/08/01 08:51

その用途で「。」が4つずつで区切ったとき、なぜcsvの桁が揃うと考えられるのかわかりませんが、とにかく4つで切ればいいのですか? そのあとで、カンマで区切る処理はまた別途入るということですよね?
退会済みユーザー

退会済みユーザー

2019/08/01 13:59

整理しますね。要件は2つです。 1つは 「198,000は安い。」とユーザが入れたら 「198,000は安い。」と格納する。198 000は安い。 のように分割はしない。 もう1つは「。」が4つ文章が来たら改行する。 例えば「ひとつめのぶん。」「ふたつめのぶん。」「みっつめ。」「よっつめ。」ここで改行して 「5のぶん。」「6のぶん。」「7め。」「8め。」ここで改行する。 但し「。」の数はユーザからの入力なので個数は0かもしれない。「。。。。」とかそういう事は排他で排除して考えないでください。
guest

回答1

0

参考にされたその解答は、コメントを読む限り問題があるようです。そちらではなく、think49 さんの回答の方を参考にしてください。

また PapaParse というのもあります。

投稿2019/07/31 12:03

編集2019/07/31 12:10
Zuishin

総合スコア28660

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

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

退会済みユーザー

退会済みユーザー

2019/07/31 12:13

ありがとうございます。参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問