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

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

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

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

Q&A

解決済

1回答

4600閲覧

GASでスプレッドシートを開いて表示させたい

NulluoKikiura

総合スコア34

Google Apps Script

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

0グッド

1クリップ

投稿2021/09/23 00:30

編集2021/09/23 05:28

やりたいこと:GAS(Google App Script)を使用して特定のIDのスプレッドシートを開いてユーザーに表示させたい

  • openById でシートが開けるのは分かっているのですが、Excelマクロのように実際にユーザーに目に見える形で開かれるのではないのでマクロを実行した人にシートが見えません
  • GASの終了後に結果のシートをユーザーに見せるために、結果シートをブラウザで表示する、という事が実現したいです
  • もうコンテナバインド型で作り始めてしまったのでできればコンテナバインド型のスクリプトで実現できる方法がよいのですが、無理ならスタンドアロン型のスクリプトでの方法でもよいです

利用シーン

・ユーザーがスプレッドシート(①)上のボタンをおしたら、スクリプト処理が開始
(処理している間、ユーザーはそのスプレッドシートを開いたままにしている)
-> その処理が終わったら、処理が終わった旨のメッセージボックスがスプレッドシート上に表示される
-> メッセージボックスのボタンを押したら、処理結果のスプレッドシート(②)をブラウザの別ウィンドウに表示する。
①と②は別のシートです

ためしたこと

  • スクリプトエディタの「実行」ボタンからスクリプト起動してるからダメなのかと思い、シートに設置したボタンからスクリプトを呼ぶように変更しましたが、openByIdではやはりシートは表示されません

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/23 03:17 編集

使用シーンとしては具体的にどういう形なのでしょうか。 たとえば、 ・ユーザーがスプレッドシート上のボタンをおしたら、スクリプト処理が開始 (処理している間、ユーザーはそのスプレッドシートを開いたまま何か別のことをしている) -> その処理が終わったら、処理が終わった旨のメッセージボックスがスプレッドシート上に表示される -> メッセージボックスのボタンを押したら、処理結果のスプレッドシートをブラウザの別ウィンドウに表示する。 というのであれば可能と思います。 一方、現状のGoogleスクリプトでは下記のような動作はできないと思います。 ・ユーザーがGoogleスプレッドシートを1つも開いていない状態(処理開始後にスプレッドシートを閉じた状態を含む)で、処理が完了したら、ユーザーのブラウザに新たにスプレッドシートを表示させること。 ・Googleフォームの送信やスプレッドシートの変更(onEdit含む)、GMail監視、定期実行トリガー等、「ユーザーによるスプレッドシート上のボタンやメニューUI操作以外」をトリガーとして開始した処理が完了したときに、指定したスプレッドシートを表示させること。 ・ユーザーがボタンやカスタムメニューを押してスクリプト処理を開始し、その処理が終わったときに、メッセージボックスによるユーザーの応答を待たず直接別のスプレッドシートを表示させること。 (上記の例のように、処理が終わったら一旦メッセージボックスによるユーザー応答を待たないといけません。昔はクリックイベントとアンカーを内部で自動的に作成してクリックイベントを転送する方法が可能だったようですが、現在は同じ方法が使えなくなっています)
NulluoKikiura

2021/09/23 05:31

利用シーンを追記いたしました。このケースならできるということでしょうか?ご教示お願いしたいです 要はスクリプトの処理に時間がかかるので、完了した後で結果が出力されたシートを見に行きたいのですが、一々フォルダを開けてシートを開くのが面倒なので、そこを簡略化したいという思いで質問いたしました。 でも、ついExcelのマクロと同様の発想でそんなことができると思ってしまいましたが、ユーザーのブラウザを勝手に操作して開くなんて処理、よく考えればAPI提供側もさせたいとは思わない気がしますし、この要件なら、スプレッドシートのリンクつきのメールをユーザーに送信するのが良い気がしてきました‥
退会済みユーザー

退会済みユーザー

2021/09/23 07:41

追記された利用シーンならば、可能です。sawaさんの回答が参考になるかと思います。 >スプレッドシートのリンクつきのメールをユーザーに送信する それも1つの手ですね、その場合だと特にスプレッドシートのウィンドウを開いたままにする必要はありません。
guest

回答1

0

ベストアンサー

特定のIDのスプレッドシートを開いてユーザーに表示させたい

この部分だけの回答ですが、「GASで指定したURLのページを新しいタブで開きたい」と一緒かと思うので、先人の回答を参考にされるのが良いと思います。

GASでは出来ないのでダイアログを開いてJavascriptで開くという流れ

https://teratail.com/questions/164151

投稿2021/09/23 06:16

sawa

総合スコア3002

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

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

NulluoKikiura

2021/09/30 14:17

sawa様の回答、qnoir様の回答どちらもためになったので正直どちらをベストアンサーにするか悩みました。 迷った末、より直接的な解決策を提示してくださったsawa様の回答をベストとさせていただきます。 (提示された内容で実装できました) qnoir様の回答も、多くの情報を丁寧に教えてくださり、大変有用なものでした。 お二方とも、ご回答誠に有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問