前回で呼び出しボタンを押して音が鳴るようになりました。
あとは、GASを組み合わせて送信をします。
スプレッドシートを準備する
送信があった際に履歴を登録する用のスプレッドシートを準備します。
GASにデータを追記する
このコードは、スプレッドシートの「受付履歴」という名前のシートに、日付や時刻の情報を書き込みます。
function doGet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('受付履歴');
var lastRow = sheet.getLastRow();
var nextRow = lastRow + 1;
var currentDate = new Date();
sheet.getRange(nextRow, 1).setValue(currentDate);
sheet.getRange(nextRow, 2).setValue('=TEXT(indirect("A"&row()),"yyyy/mm/dd")');
sheet.getRange(nextRow, 3).setValue('=TEXT(indirect("A"&row()),"hh")');
}
[rml_read_more]
SpreadsheetApp.getActiveSpreadsheet()
によって、現在アクティブなスプレッドシートを取得しています。ss.getSheetByName('受付履歴')
によって、「受付履歴」という名前のシートオブジェクトを取得しています。sheet.getLastRow()
によって、シートの最終行の行番号を取得しています。lastRow + 1
を使って、次に書き込むべき行の行番号を計算しています。new Date()
によって、現在の日時情報を取得しています。sheet.getRange(nextRow, 1).setValue(currentDate)
を使って、次の行の1列目に現在の日時を書き込んでいます。sheet.getRange(nextRow, 2).setValue('=TEXT(indirect("A"&row()),"yyyy/mm/dd")')
を使って、次の行の2列目に書き込むための式を設定しています。この式は、1列目の日時をフォーマットして “yyyy/mm/dd” 形式のテキストとして表示します。- 同様に、
sheet.getRange(nextRow, 3).setValue('=TEXT(indirect("A"&row()),"hh")')
を使って、次の行の3列目に書き込むための式を設定しています。この式は、1列目の日時をフォーマットして “hh” 形式のテキストとして表示します(時刻のみ)。
doGet
関数が呼び出されると、現在の日時情報が「受付履歴」シートに追加され、2列目には日(yyyy/mm/dd)、3列目には時間(hh)が表示されます。
デプロイする
ウェブアプリケーションとしてデプロイすると、スクリプトはウェブページのように振る舞い、特定のURLからアクセスできます。
このURLは、他のウェブページやJavaScriptのfetch関数などから呼び出すことができます。
提供したスクリプトの fetch('https://script.google.com/macros/s/XXXXXXXXX/exec')
の部分がこれに該当します。
呼出ボタンを押すと、呼出音が鳴って、スプレッドシートにデータが登録されました。
まとめ
このスクリプトをウェブサイトに組み込むことで、フォームが送信された際に音を再生し、指定したGASを実行できます。GASはデプロイすることで外部からアクセス可能になり、ウェブアプリケーションのように動作します。
つづきは、また。