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

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

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

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

Q&A

解決済

1回答

746閲覧

スプレッドシートで初めのページにだけメッセージ表示をする方法

ran_net

総合スコア17

Google Apps Script

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

0グッド

0クリップ

投稿2018/12/13 04:21

編集2018/12/13 05:27

現状

下記はスプレッドシートを開いたときに、ポップアップメッセージが表示されるコードで、
メッセージ上のURLには、各項目ごとの個人専用のフィルタのハイパーリンクを置く予定のコードです。

function onOpen(){ var htmlOutput = HtmlService .createHtmlOutput('<p>言葉</p><p><a href="URL" target="blank">リンク</a></p><p><a href="URL" target="blank">リンク2</a></p>') .setSandboxMode(HtmlService.SandboxMode.IFRAME) .setWidth(250) .setHeight(300); SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'タイトル'); }

補足(個人専用のフィルタについて)

個人専用のフィルタ

ポップアップメッセージに表示するリンク先を↑の各フィルタにした、ということです。
リンクは上手くできていますが、別タブで開くので
スプレッドシートを開いたときのポップアップメッセージが
再度出てしまい、邪魔だなと。。。思い質問いたしました。

初心者で説明も下手くそで申し訳ございません。

解決したいこと

シートを開いたときにメッセージが表示され、フィルタで絞り込まれたスプレッドシートが開くのですが、
フィルタがかかったスプレッドシートが別タブで開いてしまいます。
別タブで開いてしまうことで、ポップアップメッセージが再度表示されてしまします。

- リンクが別タブで開かないようにする方法
- 個人フィルタがかかったのシートが別タブで表示された際に、ポップアップメッセージが出ないようにする方法

上記のどちらか2点を教えていただきたいです。

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

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

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

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

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

papinianus

2018/12/13 04:32

「各項目ごとの個人専用のフィルタのハイパーリンク」ってどういうものですか?onOpenで最初からフィルタを設定すればよいのではないでしょうか? → https://teratail.com/questions/122729
ran_net

2018/12/13 05:00

少し補足させていただきました。 リンク先の設定も見させていただきます。 ありがとうございます。
guest

回答1

0

ベストアンサー

結論から言って、その回避はできないと思います。
面倒な、あるいはさほど便利でない、回避方法については、下にかいてます。

  • リンクが別タブで開かないようにする方法

検証してないんですが、

javascript

1.createHtmlOutput('<p>言葉</p><p><a href="URL" target=this.name>リンク</a></p><p><a href="URL" target=this.nameb>リンク2</a></p>')

こうすれば、もしや、と思います。というのはaタグのtargetは、開くタブを指定するもので、そこに何か書いちゃうとだいたい新タブになります。同じタブにするには、ブラウザの現在のタブ名(つまりthisのname)を指定すれば開き先を自タブにもできるはず。

ただ、同じタブであっても、urlからシートを開いちゃうと、スプレッドシートのonOpenを抑制できないと思う

  • 個人フィルタがかかったのシートが別タブで表示された際に、ポップアップメッセージが出ないようにする方法

ここなんですが、別タブだからじゃなくて、「onOpen」が発生するからなんですよね。
onOpenはonOpen(e)とイベントパラメータを貰うのですが、そこに有益な情報がないんです。
なので、「リンクから開いたときに、何らかの条件を利用して、onOpen中の処理を抑止する」ができきないと思う

他の方法

  1. (面倒な方法)スクリプトをがんばれば、スクリプトで「フィルタ設定」を作って、フィルタを効かせた状態にすることができます。

検証したのですが、はりつけていただいた普通の機能でフィルタをつけたもの、はスクリプトからは呼び出せないっぽい(手動付与したフィルタをしてるのに、フィルタがないっていう結果になる)
●なので、今の設定と同じことをスクリプトで作り込むしかないですが、やりかたが結構面倒(普通のjsにはない処理なので…)。最初コメントしてたのは、この作り込みができていると思ったので、onOpenで実行するだけじゃん、と思ったのでした。
2. (さほど便利でない方法)モーダルダイアログをやめる。何かのボタンを押したら出るようにするか、toastにリンクが書けるならtoastで一定時間後に勝手に閉じるからよしとするか、1行目にはデータをかかないことにして、onOpenでA1セルにurlを出すとか、を考える

投稿2018/12/13 08:30

編集2018/12/13 08:32
papinianus

総合スコア12705

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

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

ran_net

2018/12/14 02:00

回答ありがとうございます。 リンクが別タブで開かないようにする方法は、上手くいかず(うまくコードが打ててないからかも)小さいウィンドウの中にスプレッドシートが表示されてしまいました。 アドバイスいただきましたように、モーダルダイアログを辞め、図形にスクリプトを割り当てることにしました。そのようなアイデアまで考えることができていませんでしたので、大変参考になりました。 ありがとうございました。
papinianus

2018/12/14 02:04

google scriptはgoogleさんの勢いからするとちゃんと進歩していないところがあって、ユーザが操作する全部が裏で操れるようになっていないのです。 残念ですね。 他の方法がとれてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問