💨
GoogleFormをアンケート遷移構造読み取り、QuickDiagramで可視化できるフォーマットに出力するGoogleAppScript
背景
以前から定量調査を行う際にGoogleFormを使用する場合が多かったのですが、調査設計を複雑にした場合、回答のセクション移動が複雑になり、GoogleFormの編集画面で人間の目レビューするのがかなり集中しなければならいような状況でした。
QuickDiagramでフローチャート図で見える化する
QuickDiagramというテキストベースで以下のような記述をするとフローチャートを綺麗に描いてくれるサービスをTwitterで知り、GoogleFormをGASで遷移構造をデータ化して所定のフォーマットに直せばチェックがしやすくなりそうだなと思いコードを書いてみました。
GASのコード
コード.js
function checkFlow() {
var form_url = "アンケートフォームとして使用しているGoogleFormのURL"
var form = FormApp.openByUrl(form_url)
var items = form.getItems()
Logger.log("このツールはGoogleのアンケートフォームの遷移を確認するためのツールです")
Logger.log("指定したフォームの構造を読み取り、複数選択時のセクション遷移、セクション終了時のセクション移動先情報を抜き出しquickdiagramのツールで可視化出来るフォーマットとして出力します")
Logger.log("https://editor.quickdiagram.com/")
var questions = [];
var routes = ["graph TD"];
var before = 0;
for(var i=0;i<items.length;i++){
var title = (items[i].getTitle() ? items[i].getTitle() : "").replace(/[^\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf0-9a-zA-Z]/g,'').replace(/・/g,'');
if(items[i].getType() == FormApp.ItemType.PAGE_BREAK){
if(items[i].asPageBreakItem().getGoToPage()){
routes.push("i_" + i + "[" + title +"] --> i_" + items[i].asPageBreakItem().getGoToPage().getIndex())
}
routes.push("i_" + i + "[" + title + "] --> i_" + (i+1))
}else if(items[i].getType() == FormApp.ItemType.MULTIPLE_CHOICE){
var choices = items[i].asMultipleChoiceItem().getChoices();
var is_gotopage = choices.some(function(choice){return (!!choice.getGotoPage())})
if(is_gotopage){
for(var j=0;j<choices.length;j++){
var choice = choices[j];
var value = (choice.getValue() ? choice.getValue() : "").replace(/[^\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf0-9a-zA-Z]/g,'').replace(/・/g,'')
if(choice.getGotoPage()){
routes.push("i_" + i + "[" + title + "] -- " + value + " --> i_" + choice.getGotoPage().getIndex())
}else{
routes.push("i_" + i + "[" + title + "] -- " + value + " --> i_" + (i+1))
}
}
}else{
routes.push("i_" + i + "[" + title + "] --> i_" + (i+1))
}
}else{
routes.push("i_" + i + "[" + title +"] --> i_" + (i+1))
}
}
Logger.log(routes.join("\n"))
}
出力された文字列をQuickDiagramにコピペ
以下のように出力されます。だいぶ見やすくなりますね。
良い調査ライフを。
Discussion