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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

1450閲覧

出力先でURLが<>で囲まれないようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2018/11/05 02:29

編集2018/11/05 08:22

###概要
Slack の Interactive Massage で JSON の構造に textarea を入れています(下のような感じ)。

JSON

1//前略 2{ 3 'type': 'textarea', 4 'label': 'URLとその説明を入力', 5 'optional':'true', 6 'name': 'dialg_url' 7} 8//後略

このプログラムを実行するとSlackでダイアログが開き、入力した文字列がSubmit後、 Google Spreadsheet に表示されます。
例えば、次の文字列を入力するとします。

<課題1> Slackのダイアログについて https://api.slack.com/dialogs

すると、Google spredsheet には次のように表示されます。

<課題1> Slackのダイアログについて <https://api.slack.com/dialogs>

URLが<>で囲まれて表示しないようにしたいのです。

正規表現で<>を消すことも考えたのですが、URL以外の<>は消したくないです。

なお、Slackへの投稿やGASの受信はchat.postMessagedoPost()を使用しています。
入力した文字列は一つの配列に格納しています。

良い方法を教えてください。

###追記1
<>がどのタイミングでつくようになったのか調べてみました。
上の処理をした後に、stateにmessage_tsとdescriptionを渡しているのですが、~~どうもこの時に<>がつくようです。~~その前に配列に格納していました。

JSON

1var dialog = { 2 'token': 'xxxxxxxxxxxxxxxxxxxxxxx', 3 "trigger_id": trigger_id, 4 "dialog": JSON.stringify({"callback_id": "dialog4", 5 "state":message_ts+','+description, 6 "title": "追加情報を入力", 7 "submit_label": "Submit", 8 "elements": [ 9 {"type": "textarea", 10 "label": "追加情報", 11 "name": "dialg_plus" 12 }] 13 }) 14}

###追記2
ダイアログを使用しないで、Slackの機能のTrigger Wordを使って調べてみました。
Trigger WordのあとにURLを含んだ文字列を入力して送信し、Google Spreadsheetに表示させたところ、<>が付きました。
入力された文字列データをGoogle apps Scriptで配列に格納しているので、配列化するとURLに<>が付くようです。

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

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

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

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

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

madoka9393

2018/11/05 06:23

「正規表現で~」と言う記載がありましたが、必ず頭とお尻にそれぞれ「<(>)」が付与されるのであれば、先頭から1字及びお尻から1字を切り取るようにするのはどうでしょう?(根本的な解決にはならないかもしれませんが…)
退会済みユーザー

退会済みユーザー

2018/11/05 06:58

ありがとうございます。それができれば楽なんですが...URLのほかにも文字列はあるので、他の文字列で<>を消さないようにできると良いです。どちらにしろURLなのかどうかの判別が必要になりますね。
madoka9393

2018/11/05 07:28 編集

入力文字例にとらわれてしまったいました。 URLが含まれるかもしれないし含まれないかもしれない かつ どこに含まれるかわからない ということであれば、仰る通りURLかどうかの判定を入れて、URLだった場合のみ処理をしてあげるようにする位しか当方では思いつきませんでした。 URLの判定について、URLの正規表現サンプル( https://www.megasoft.co.jp/mifes/seiki/s310.html )とかでカバーできそうですかね?
guest

回答1

0

ベストアンサー

pattern1

javascript

1対象の文字列.replace(/<(https?://[\w/:%#$&?()~.=+\-]+)>/, "$1");

または、

pattern2

javascript

1function testIsUrl(str){ 2 // url かを判定する処理 3 return true; // url なら 4 return false; // url でないなら 5} 6 7対象の文字列.replace(/<(.+?)>/, function (match, p1){ 8 if(testIsUrl(p1)) return p1; 9 return match; 10}

pettern1
  • 正規表現で前後に <> で挟まれたurlを `$1" で抽出しています。
pettern2
  • 複雑な条件を出したいときに使えます。
  • replace の第二引数には関数を指定できるので、urlならば url 部分を返し、そうでなければそのまま返します。

参考

投稿2018/11/05 09:28

_lemon2003_

総合スコア274

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

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

退会済みユーザー

退会済みユーザー

2018/11/08 06:35

ありがとうございます!うまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問