#facebookのリンクがマイマップ上で機能しない
飲食店支援のサイトを作っているのですが、グーグルフォームで店舗のfacebookを入力してもらうと、日本語URLを入れてくる方がいます。
が、これをそのままマイマップの個別項目に入力しても、リンクが途切れちゃって表示されません。
##関数で解決
こちらの任意のセルのところをfacebookアドレスの入力欄に設定しました。
=IF(ENCODEURL(REPLACE(SUBSTITUTE(SUBSTITUTE(IF(ISERROR(LEFT(任意のセル,FIND("?",任意のセル)-1)),任意のセル,LEFT(任意のセル,FIND("?",任意のセル)-1)),"www.",""),"m.facebook","facebook"),1,21,""))<>"","https://facebook.com/"&ENCODEURL(REPLACE(SUBSTITUTE(SUBSTITUTE(IF(ISERROR(LEFT(任意のセル,FIND("?",任意のセル)-1)),任意のセル,LEFT(T3,FIND("?",任意のセル)-1)),"www.",""),"m.facebook","facebook"),1,21,"")), "")
##具体的なポイント
###ENCODEだけでは対応できず
単純にUNICODE変換の関数「ENCODEURL」を使えるかと思ったのですが、こちらの関数を使うとfacebook.com/の最初のスラッシュも認識されず、ドメインがきれいに認識されません。
###モバイルページのリンク・wwwのありなしにも対応
.comあとのスラッシュを認識させるため、文字数で区切りましたが、m.facebookやwwwの有無で失敗するので先にモバイルを表記するm.facebookとwww.facebookなどの表記もすべてwwwなしのPCアドレスに統一してからユニコードに置き換えています。
##懸念点 Facebook以外のアドレスを入力されるとバグる
IF関数でfecebookを含む、などの条件分岐を加えたら良いのかもですが、たまに、ここにInstagramのURLなどを入力されるとバグります。
#現状は使ってません
上記の関数はグーグルフォーム→スプレッドシート→WordPressというフローの中で使っていましたがAppSheetに移行したので、不要になりました。
現行サイト https://www.appsheet.com/start/5e535202-170c-4eca-889e-cb86425f8e34