1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS初歩】特定の日時まで、定期的に現時点のGoogleフォームの回答数をDiscordに投稿する

Last updated at Posted at 2021-09-13

イベントの申し込みやアンケートの回答の状況を定期的に把握しておきたい(特にチームでなんか運営していて、集まりが芳しくないときにプッシュせにゃならぬ)ときがある。
総数だけ知りたい。その数。それ。
setting_trigger_210913_00.png
…ので、それ用のお手軽コードを書いた。

作業すること(全体の流れ)

  1. Googleフォームにスクリプトを書く
  2. トリガーを登録する
  3. Discordに結果が届くのを待つ

スクリプト抜粋

回答数を調べるところ

フォームの回答数は、単純に Form クラスgetResponses() の戻り値の数を取得するだけ。

FormApp.getActiveForm().getResponses().length

Discord に投稿するところ

Discord の特定のチャンネルへの投稿は UrlFetchApp クラスの fetch(url, params) を使う。Webhook URL の取得方法は割愛。

const m = `現在の回答数 ${FormApp.getActiveForm().getResponses().length}`; //回答数
const u = '[Webhook url]'; //Discord の Webhook URL を貼付
const o = {'method':'post',
            'contentType':'application/json',
            'payload':JSON.stringify({'content':m})};
try{
  const r = UrlFetchApp.fetch(u, o);
  Logger.log(`code=${r.getResponseCode()}`); //204ならヨシ!!
}catch(e){ Logger.log(e); }

特定の日時に処理を実行するところ

めんどくさいので今回は myFunction() に全てのコードを書いて、それをトリガーに登録するだけにした。1回だけ実行するならこれでOK。
setting_trigger_210913.png
日付の書式は YYYY-MM-DD HH:MM

特定の日時になるまで毎日特定の時間にチェックするところ

現在の状況をなんとなく毎日知りたいので、先のトリガを「日付ベースのタイマ」に変更して、 myFunction() の最後の行に下記3行を追加した。

const nd = new Date(); //now date
const cd = new Date('[YYYY-MM-DD HH:mm]'); //for compire
if(nd>=cd)ScriptApp.getProjectTriggers().forEach(i=>ScriptApp.deleteTrigger(i));

setting_trigger_210913_02.png

コード全体

count_now_formresponses.gs (現在のフォームの回答数を定期的にDiscordに投げ飛ばす)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?