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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1528閲覧

オンクリック時に google.script.run.withSuccessHandlerが何度も実行されてしまうのですがどう対処すればよいか教えていただけるでしょうか

SeijyuHijiri

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/07/21 08:32

前提・実現したいこと

現在、スプレッドシートのデータを元にガチャシステムのようなものをつくっております
データの情報を確立に合わせて、サーバー側のデータを10連として取得し
google.script.run.withSuccessHandlerで表示させています
表示するにはするのですが、なぜか何度も表示されてしまいます

GASコード--------------------------------------- function doGet(){//ブラウザにそのWebページを表示関数 var title="ガチャカード"; return HtmlService.createTemplateFromFile('index').evaluate().setTitle(title); } function cardSelect10(){  const cardData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("カードデータ").getDataRange().getValues(); var obj = new Array(); var json; for(let i=0; i< 10; i++){ let searchPosition = 0.0; let cardWeight=cardData[0][1]; const pickedItem = Math.random() * cardWeight; for(let j=2; j< cardData.length; j++){ searchPosition += cardData[j][0]; if( pickedItem < searchPosition ){      obj[i]=cardData[j]; break; } } } //json = JSON.stringify(obj) //console.log(obj[2]); return(obj); } Htmlコード---------------------------------------------- <head> <meta charset="UTF-8"> <title>がちゃてすと</title> <script language="javascript" type="text/javascript"> function OnButtonClick(obj) {    google.script.run.withSuccessHandler(OnButtonClick).cardSelect10(); //サーバー側の関数の呼び出しが成功したらクライアント側関数を呼び出す let gUrl = "https://drive.google.com/uc?export=view&id="; let html =""; let line = new Array(); for( let i=0; i<obj.length; i++){ line = obj[i]; html += i + ":" + line[1] + "<br>"; } target = document.getElementById("output"); target.innerHTML = html; } </script> </head> <body> <input type="button" value="1れん" onclick="OnButtonClick();"/><br /> <div id="output"></div> </body> </html>

試したこと

google.script.run.withSuccessHandler(OnButtonClick).cardSelect10();
の記述を
function OnButtonClick(obj) {
から外に出すと1回は表示するのですが2回目以降は反応しません(当たり前だと思いますが)
もう1つデータ取得するための関数を作ったのですがそちらも上手くデータを取得できず
記載方法をどうすればいいのか悩んでおります
どうぞよろしくお願いします

補足情報(FW/ツールのバージョンなど)

テスト環境はWINDOWS10 バージョン: 92.0.4515.107(Official Build) (64 ビット)

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

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

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

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

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

guest

回答1

0

自己解決

すいませんコチラかいけつしました

データゲットの方法が違っていたようです

<script language="javascript" type="text/javascript"> let html =""; let line; let getData; function GetParameters(data){ getData = data; } function OnButtonClick() { google.script.run.withSuccessHandler(GetParameters).cardSelect10(); let gUrl = "https://drive.google.com/uc?export=view&id="; let ret = GetParameters(); target = document.getElementById("output"); target.innerHTML = html; } </script>

投稿2021/07/21 08:58

SeijyuHijiri

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問