やりたいこと:GAS(Google App Script)を使用して特定のIDのスプレッドシートを開いてユーザーに表示させたい
- openById でシートが開けるのは分かっているのですが、Excelマクロのように実際にユーザーに目に見える形で開かれるのではないのでマクロを実行した人にシートが見えません
- GASの終了後に結果のシートをユーザーに見せるために、結果シートをブラウザで表示する、という事が実現したいです
- もうコンテナバインド型で作り始めてしまったのでできればコンテナバインド型のスクリプトで実現できる方法がよいのですが、無理ならスタンドアロン型のスクリプトでの方法でもよいです
利用シーン
・ユーザーがスプレッドシート(①)上のボタンをおしたら、スクリプト処理が開始
(処理している間、ユーザーはそのスプレッドシートを開いたままにしている)
-> その処理が終わったら、処理が終わった旨のメッセージボックスがスプレッドシート上に表示される
-> メッセージボックスのボタンを押したら、処理結果のスプレッドシート(②)をブラウザの別ウィンドウに表示する。
①と②は別のシートです
ためしたこと
- スクリプトエディタの「実行」ボタンからスクリプト起動してるからダメなのかと思い、シートに設置したボタンからスクリプトを呼ぶように変更しましたが、openByIdではやはりシートは表示されません
使用シーンとしては具体的にどういう形なのでしょうか。
たとえば、
・ユーザーがスプレッドシート上のボタンをおしたら、スクリプト処理が開始
(処理している間、ユーザーはそのスプレッドシートを開いたまま何か別のことをしている)
-> その処理が終わったら、処理が終わった旨のメッセージボックスがスプレッドシート上に表示される
-> メッセージボックスのボタンを押したら、処理結果のスプレッドシートをブラウザの別ウィンドウに表示する。
というのであれば可能と思います。
一方、現状のGoogleスクリプトでは下記のような動作はできないと思います。
・ユーザーがGoogleスプレッドシートを1つも開いていない状態(処理開始後にスプレッドシートを閉じた状態を含む)で、処理が完了したら、ユーザーのブラウザに新たにスプレッドシートを表示させること。
・Googleフォームの送信やスプレッドシートの変更(onEdit含む)、GMail監視、定期実行トリガー等、「ユーザーによるスプレッドシート上のボタンやメニューUI操作以外」をトリガーとして開始した処理が完了したときに、指定したスプレッドシートを表示させること。
・ユーザーがボタンやカスタムメニューを押してスクリプト処理を開始し、その処理が終わったときに、メッセージボックスによるユーザーの応答を待たず直接別のスプレッドシートを表示させること。
(上記の例のように、処理が終わったら一旦メッセージボックスによるユーザー応答を待たないといけません。昔はクリックイベントとアンカーを内部で自動的に作成してクリックイベントを転送する方法が可能だったようですが、現在は同じ方法が使えなくなっています)
利用シーンを追記いたしました。このケースならできるということでしょうか?ご教示お願いしたいです
要はスクリプトの処理に時間がかかるので、完了した後で結果が出力されたシートを見に行きたいのですが、一々フォルダを開けてシートを開くのが面倒なので、そこを簡略化したいという思いで質問いたしました。
でも、ついExcelのマクロと同様の発想でそんなことができると思ってしまいましたが、ユーザーのブラウザを勝手に操作して開くなんて処理、よく考えればAPI提供側もさせたいとは思わない気がしますし、この要件なら、スプレッドシートのリンクつきのメールをユーザーに送信するのが良い気がしてきました‥
追記された利用シーンならば、可能です。sawaさんの回答が参考になるかと思います。
>スプレッドシートのリンクつきのメールをユーザーに送信する
それも1つの手ですね、その場合だと特にスプレッドシートのウィンドウを開いたままにする必要はありません。
回答1件
あなたの回答
tips
プレビュー