ページ

2015年8月8日土曜日

GASまとめ3 - Formの回答先を設定する

Formの回答先を設定する

通常Formを新規に作成した場合、回答先のスプレットシートはFormのメニューから
選択か、設定しなければ新規のスプレットシートが作成される。

今回はこれをGAS上で設定する。

  • Formを新規作成

      今回は「TestForm」という名前で、
    「名前」、「出席/欠席」項目だけのシンプルなFormを作成。
  • 回答先の設定
    ↑ Formの「回答を表示」メニューから、回答先を選択するダイアログが表示される。
    ※ 今回は何も設定しない
回答先の設定をスクリプト上で行う

  • GASを実行する用のスプレットシートを別で新規作成
    「FormAnswerSettings」という名前で作成しました。
  • スクリプトエディッタ起動し以下内容で編集
/**
* スプレットシートとフォームの結び付け
*/
function bindForm() {
// フォーム取得
var formUrl = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
var form = FormApp.openByUrl(formUrl);
// スプレットシート取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
var date = new Date();
var sheetName = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate();
// シート名を変更
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
// シート名に「フォームの回答」が含まれている場合
var name = sheets[i].getName();
if (name.indexOf('フォームの回答') != -1
&& name.indexOf(sheetName) == -1) {
sheets[i].setName(sheetName);
}
}
}
view raw bindForm.gs hosted with ❤ by GitHub

※ FormのURLはFormエディッター画面のURL
(https://docs.google.com/forms/d/{FormのID}/edit)をコピー

何をやっているかというと、
 1. FormのURLからオブジェクトを取得
 2. GASを実行するスプレットシートに回答用のシート(日付)が作成されるように設定
     ※ ここは設定したいスプレットシートに置き換える
 3. 設定した時点で「フォームの回答」シートが作成されるので、
     そのシート名を日付に修正

ん〜単純。
同じシートを作らないようなチェックは何もしてないのであしからず・・・

  • bindFormを実行する

初回は認証の承認が求められる

正常に処理が終了するとスプレットシートに新たなシートが追加されていると思います。


Formと回答スプレットシートのリンク解除


設定した回答スプレットシートのリンクを解除したい場合、Formのエディッター画面のメニューから「回答」>「フォームのリンクを解除」でOK



0 件のコメント:

コメントを投稿