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

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

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

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

Q&A

2回答

3124閲覧

【Google Apps Script】document.getElementById("serchStaff").value = result/"Error";の意味

YousukeTanaka

総合スコア79

Google Apps Script

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

0グッド

0クリップ

投稿2020/06/25 11:00

編集2020/06/26 04:40

やりたいこと

Google Apps Scriptの練習をしています。以下の資料を参考に、検索機能を作成しています。
code.gsの機能(gsのfunction)をHTMLファイルで使えるようにしています。
そのHTMLの<body></body>中に、window.onload = function() {}が使われています。
これを使う意味を理解したいと考えています。

<!DOCTYPE html> <html> <head> <base target="_top"> <?!= include('css'); ?> </head> <body> <div class ="innner_contents"> <p>値が更新されました。スタッフ検索のシートをご確認ください。</p> <textarea id="serchStaff"></textarea> </div> //以下の部分の特に、function onSuccess(result){}/function onFailure(e){}の機能を確認したいと考えています。    <script> window.onload = function() { google.script.run .withFailureHandler(onFailure) .withSuccessHandler(onSuccess) .staffInformation(); } function onSuccess(result) { document.getElementById("serchStaff").value = result; } function onFailure(e) { document.getElementById("serchStaff").value = "Error"; } </script> </body> </html>

確認したい点

  1. 「google.script.run.(取得に成功した時の処理).(取得に失敗した時の処理).実行処理」という書き方はパターン化された一般的な書き方なのでしょうか?
  2. 「 document.getElementById("@@@").value = result;」で、初めて「=result」「="Error"」が登場したのですが、これは、このようなものとして理解して良いのでしょうか?

参考URL

【GAS】Google Apps Script 活用事例 簡易スタッフ検索システムを作ちゃった話。

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

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

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

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

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

mkk

2020/06/26 00:56

> そのHTMLの<body></body>中に、window.onload = function() {}が使われています。 添付のソースも参考URLも、window.onloadはbodyの外に出ているように感じますが どの部分のことを仰っているのでしょうか?
YousukeTanaka

2020/06/26 04:41

大変失礼いたしました。誤りでしたので、修正しました。
guest

回答2

0

「google.script.run.(取得に成功した時の処理).(取得に失敗した時の処理).実行処理」という

書き方はパターン化された一般的な書き方なのでしょうか?

google.script.run は HTMLOutput などでクライアント側に描画された画面から サーバ側の gs にあるスクリプトを呼びだすための方法です。
.gs 上の google apps script は、この方法を通じてしか html から呼び出すことができません。

「 document.getElementById("@@@").value = result;」で、初めて「=result」「="Error"」が登場したのですが、これは、このようなものとして理解して良いのでしょうか?

「このようなもの」がどのようなものであるかの情報がないので、良いとも良くないとも回答できません。

投稿2020/06/26 08:03

papinianus

総合スコア12705

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

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

0

参考URLではwindow.onloadがbodyの外に出ていますが、
bodyの中に入れるという修正をしてしまって良かったですかね?
でも今回の質問に直結する訳ではないのでそちらは置いておいて、質問への回答をします。

1.「google.script.run.(取得に成功した時の処理).(取得に失敗した時の処理).実行処理」という書き方はパターン化された一般的な書き方なのでしょうか?

同期処理を行う場合には必要な書き方かと思います。
サーバ側で処理されるものとクライアント側で処理されるものがある場合、
それを単純に並べると非同期処理となってしまいます。

本当はサーバ側でstaffInformation()関数の実行が終わり、戻り値(スタッフ情報)が返ってきてから
次の関数の処理に移りたいところですが、非同期処理だとサーバからの返答を待たずに次の処理が進みます。
そのため、記載していただいているような書き方が必要になります。
そうすることで、
staffInformation()関数実行
→成功したら返ってきたスタッフ情報をhtmlのテキストエリアに入れる
→失敗したら「Error」という文字をhtmlのテキストエリアに入れる
という処理が可能になります。
分かりやすそうな参考サイト

 

「 document.getElementById("@@@").value = result;」で、初めて「=result」「="Error"」が登場したのですが、これは、このようなものとして理解して良いのでしょうか?

質問の内容が少し分かりづらいですが、「初めて登場した」という文面から見るに、宣言していないのに使って良いのか?
という意味でしょうか?
今回の下記の処理は

window.onload = function() { google.script.run .withFailureHandler(onFailure) .withSuccessHandler(onSuccess) .staffInformation(); } function onSuccess(result) { document.getElementById("serchStaff").value = result; } function onFailure(e) { document.getElementById("serchStaff").value = "Error"; }

①staffInformation関数をサーバ側で実行して終了を待つ
②成功したらstaffInformation()の結果をonSuccess関数の引数(result)に渡して実行する
③失敗したら失敗の内容をonFailureの引数(e)に渡して実行する
という流れです。
つまりfunction onSuccess(result)の「result」に検索したスタッフ情報が入ってくるため
document.getElementById("serchStaff").value = result; は
document.getElementById("serchStaff").value = 返ってきたスタッフ情報; という意味になります。

投稿2020/06/26 05:54

mkk

総合スコア378

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問