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

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

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

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

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

Q&A

解決済

1回答

1045閲覧

Googleフォームの回答を締め切ったら止めるプログラムを止める方法 GAS

2PC

総合スコア5

Google スプレッドシート

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

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

0グッド

0クリップ

投稿2021/07/15 11:37

やっていること

Googleフォームからスクリプトエディターを開いて色々やっています。
内容は、回答数調べるだけです。これをスプレッドシートに時間とともに一緒に記載スプレッドシートからグラフにして、回答率を見るというのをしています。
グラフを共有(Googleサイトでグラフをのっけて見せる)をしています。
定期的に実行し、更新するためトリガーを設定し定期的に実行しています。

本題

回答がない時はIFで条件分岐し、returnで終了していますが、回答を締め切った後も実行されます。回答数で指定できないため
どうにかしてトリガーを止める方法や、プログラムを条件分岐して止める(実行しなくなる)方法を探しています。
回答を締め切ったあとプログラムを止めるための、何か知恵はありませんか。

Google

1コード 2function myFunction() { 3 //アクティブなフォームを取得 4 var form = FormApp.getActiveForm(); 5 6 //全回答の取得 7 var formResponses = form.getResponses(); 8 9 //回答数を変数にする 10 let answer = formResponses.length 11 if(answer===0){ 12 Logger.log("回答がないためプログラムを停止") 13 return 14 } 15 16 //スプレッドシートに出力 17 //URLを記入 18 var url = "https://docs.google.com/spreadsheets/d/XXXXXXXXX/" 19 20 //シートを取得 21 var ss = SpreadsheetApp.openByUrl(url); 22 var sheet = ss.getActiveSheet(); 23 24 //最終行取得 25 var lastRow = sheet.getLastRow() 26 27 //時間を取得し変数に設定する 28 var date = new Date(); 29 //現在時刻を変数にセット 30 var DATE = (Utilities.formatDate( date, 'Asia/Tokyo', 'HH:mm:ss')); 31 32 //変数i(回数)を宣言 33 var i = 1 34 //時間を記入 35 sheet.getRange(lastRow, i).setValue(DATE) 36 //次の行 37 var i = i + 1 38 //回答数を記入 39 sheet.getRange(lastRow, i).setValue(answer) 40}

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

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

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

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

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

guest

回答1

0

ベストアンサー

form から isAcceptingResponses() で、フォームが締め切りかどうかを調べることができます

これを if の判定条件に加えてみてはいかがですか?

Google Apps script : Class Form

isAcceptingResponses

Determines whether the form is currently accepting responses.

Return

Boolean — true if the form is accepting responses; false if not

もし、トリガーも止めることを希望されるなら、時間手動型のトリガーを使って、
指定日時になったとき、フォームに対して setAcceptingResponses で false を指定し、
一連のプログラム処理で回答を締め切って、同時に集計処理もやめるといいのではないでしょうか?

投稿2021/07/15 12:17

Yoshi88

総合スコア623

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

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

2PC

2021/07/16 09:15

ありがとうございます。 探していた情報です。 //回答がない または 回答を受け付けていないならば停止 if(answer===0 || form.isAcceptingResponses() === false){ //プログラムを停止 return } にして、プログラムを停止させました。 トリガーを消す必要まではないので、そのままで運用します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問