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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

2723閲覧

GASで定期的に関数を実行させたい

bonokame

総合スコア5

Google Apps Script

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/02/23 10:29

実現したいこと

在庫状況を表示するシステムを作成しており、できるだけリアルタイムに表示させたいため、
GASで定期的にスクリプトを実行させたいです。

現状のコード

html

1<!DOCTYPE html> 2<html> 3<title>在庫表示サービス</title> 4 <head> 5 <base target="_top"> 6 </head> 7 <body> 8 <script> 9 var count = 0; 10 var countup = function(){ 11 google.script.run.write(); 12 } 13 setInterval(countup, 1000); 14</script> 15 <div align="center"> 16 <h1>各食品団体在庫状況</h1> 17 <table border="2" class="table"> 18 <tr class="tr1"> 19 <td class="dantai1">団体名</td> 20 <td class="zaiko">在庫状況</td> 21 <td class="bikou">備考</td> 22 <td class="koushin">更新時間</td> 23 </tr> 24 <? 25//以下を定期的に実行したい 26 function write(){ 27 for( var i = 2; i < 7; i++ ){ 28 var name = getD(i,1); 29 var jyoukyou = getD(i,2); 30 var bikou = getD(i,3); 31 var time = getD(i,4); 32 jyoukyoutd='<td class="'+jyoukyou+'">'+jyoukyou+"</td>"; 33 var text = "<tr><td class='dantai'>"+name+"</td>"+jyoukyoutd+"<td class='bikou'>"+bikou+"</td>"+"<td class='koushin'>"+time+"</td></tr>"; 34 output.append(text); 35 } 36 } 37 ?> 38 </table> 39 40 </div> 41 </body> 42</html>

やってみたこと

setIntervalを使ってscriptから関数を呼び出しましたがうまくいきません。
google.script.runは.gs内のコードでしか動かないのでしょうか?
write()単体ではしっかりと動作します。

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

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

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

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

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

guest

回答2

0

google.script.runではなく、google.script.run.withSuccessHandlerを使いましょう。
また、<? ?>を使ったスクリプトレットを使うのではなく、createHtmlOutputFromFileを使いましょう。

Javascript

1var countup = function(){ 2 google.script.run.withSuccessHandler(function(ret) { 3  //retでGAS側からの返り値を取得する 4  var json = JSON.parse(ret); 5 6  //jsonの値をtable内に反映するコードを以下に各 7 8 }).write(); 9} 10setInterval(countup,1000)

※ちなみにですけれど、google.script.runはGAS側の関数を実行するものなので、そのコードはHTML側のコードは実行できなくて当然です。

参考例:Google Apps Scriptでウェブアプリケーション作成入門

投稿2020/02/23 13:46

officeforest

総合スコア412

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

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

0

4年ほど前のQiitaの記事に
GoogleAppScript setIntervalを使う(GoogleAppScriptでsetInterval的なことをやる方法について記載)というのがありました。
参考にしてみてはどうでしょう。

投稿2020/02/23 10:53

coco_bauer

総合スコア6919

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問