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

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

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

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

JavaScript

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

Q&A

解決済

1回答

2801閲覧

GoogleAppsScriptについて

E3P

総合スコア10

Google Apps Script

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

JavaScript

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

0グッド

3クリップ

投稿2015/04/09 11:17

編集2015/04/09 13:59

GoogleAppsScriptについて
こんにちは。ここに質問するのは初めてです。
GASについても初心者です。というよりプログラムに関しては初心者です。

お聞きしたいのは文字列に関してです。
スプレッドシートでのスクリプトなのですが 範囲はA行の1列目から、記入のある最終列のなかで、"[" と "]"のあるセルを見つけたら、"["から"]"までを削除するスクリプトが組みたいのですが、どのような方法がいいのかわかりません。

例として

SampleText[XXXXX]

のような文字列があった場合に、

SampleText

にしたいのです。
replaceでしようにも、[,]はいいとしても、[と]の中身は全て同じではないので指定のしようがありません。共通しているのは全角文字ということなので、全角文字の指定の仕方を調べたのですが、みたところそのような指定の仕方はないようなので・・・

なにかいい方法はありませんでしょうか?
ご教示お願いいたします。

追記
splitで[より前と後で配列分けして
[0] →SampleText
[1] →[XXXXX]
とし、setValueで配列の[0]を指定するという方法に落ち着きました。

じつは [ だけでなく ( も指定しなくてはならず、問題が発生しました。

function chikan(){
var sheet = SpreadsheetApp.getActiveSheet();
for (var i = 1; i <= sheet.getLastRow(); i++){
var val = sheet.getRange("A"+i).getValue();
var ss = val.split("[");
var sss = val.split("(");
sheet.getRange("A"+i).setValue(ss[0]);
sheet.getRange("A"+i).setValue(sss[0]);
}
}

SampleText[XXXXX]だった場合
配列は
[0]SampleText
[1][XXXXX]
になりますが、(が含まれていないので 変数sssの配列[0]にはSampleText[XXXXX]がそのまま入ってしまいます。
これですと、書き換えた後にまた戻ってしまうのでifで処理を分岐しようとしたのですが、条件をどういう風にすればいいか思いつきません。
いい案がありましたらご教示ください。お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

解決したい問題ですが、 str1 = SampleText[XXXXX] のときに str2SampleText にしたい、ということで理解しました。
正規表現を使って

lang

1str2 = str1.replace(/\[[^\]]+\]/, "");

str2SampleText となります。
splitでやるのは面倒なのでこちらの方法をオススメします。

念のために解説しておきますと、 /\[[^\]]+\]/ という正規表現は

  • [ で始まって(\[
  • ]以外の文字(全角でも半角でも何であっても一文字)を1文字以上含み([^\]]+
  • ]で終わる(\]

という文字列にマッチします。
なお角括弧の前に\が付くのは、正規表現だと角括弧が特別扱いの文字だからです。

正規表現は非常に難しいですが、非常に役立つので、頑張って勉強されることをオススメします。

投稿2015/04/09 14:45

編集2015/04/09 14:46
riocampos

総合スコア241

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

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

E3P

2015/04/13 13:50

長ったらしくなっていたコードが引き締まりみやすくなりました 大変助かりましたありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問