開発
【GAS】オンラインイベントにも便利!GoogleフォームとGoogleAppsScriptで自己紹介スライドを自動生成する方法
Junichi Fujinuma
私の業務はマネジメントワークが中心であるため、仕事でゴリゴリにコードを書くことは滅多にありません。そんな中でもやはり手放せないのが業務の自動化・効率化に用いているGoogleAppsScript(およびマクロ)です。
私がGASを使う際の主な用途は「スプレッドシート業務の効率化」が中心なのですが、今回は「資料作成の効率化」にGASを使ってみましたので紹介します。なお、過去にもGAS関連の記事を何本か投稿していますので、もし宜しければご覧ください。
今回は自身が「不特定の人が参加するイベントの運営者」と仮定して、「Googleフォームで入力された自己紹介の内容を、自動的にGoogleスライドに反映する」という処理をGASを使って試してみました。自己紹介のみならずアンケートなどにも応用できます。
以下、ステップ・バイ・ステップで流れをご説明します。
Step1: Googleフォームで自己紹介の入力フォームを作成する
Google Formsで入力フォームを作成します。
Step2: Googleフォームの回答内容をスプレッドシートに連携する
Step1で作成したフォームの回答内容をGoogleスプレッドシートに連携します。ここまでは通常のGoogleフォームでよく行う流れですね。
ここで、任意となりますが補足です。
ヘッダ行の各文言はGoogleフォームの設問がそのまま表示されるため設定によっては冗長になることもあるかと思います。次のステップの作業の柔軟性を上げるためにも文言は短く修正しまったほうが良いかと思います。下図の例では自動で作成される「フォームの回答」シートとは別に新規にシートを作成し、ヘッダ行を新規に定義しています。各回答内容は単純に「フォームの回答」シートを参照しています。
Step3: Googleスライドでスライドの雛形を作成する
次に、最終的に出力する自己紹介スライドのひな形(テンプレート)をGoogleスライド上で作成します。スライド内には、Googleフォームで収集した回答内容を表示する領域をテキストで定義します。この例では “{文字列}” としています。
言い方を変えると “{文字列}” の部分をこのあと作成するスクリプトを使って各回答者の回答内容に置換します。なお「文字列」の部分には、Step2で用意したスプレッドシートのヘッダ行の値が入ります。(Step2の画像にあるA1〜N1の文字と、テンプレートの “{文字列}” の部分を見比べて頂くと、同じ文字が定義されていることが見て取れるかと思います。)
併せて、今回のフォームではプロフィール画像もアップすることになっていますので、置換用にダミーの画像もひな形に載せておきます。
Step4: Googleスライドを出力するスクリプトを書く
Googleスプレッドシートに連携された回答内容を、Googleスライドで準備したテンプレートにフィルインし、回答者ごとのスライドを出力(追加)するスクリプトを用意します。スクリプトの内容はさほど複雑ではありませんが、スプレッドシートの先頭行から処理を開始して、新規スライド(ページ)を追加し、回答内容をフィルインする、ということを繰り返しています。
function generateSlidesFromSpreadsheet() { var sheet = SpreadsheetApp.openByUrl('スプレッドシートのURL').getSheetByName('シート名'); var slide = SlidesApp.openByUrl('スライドのURL'); var datarange = sheet.getDataRange().getValues(); var template = slide.getSlides()[1]; for(var i=1;i<datarange.length;i++){ var newpage = slide.appendSlide(template); for(var j=0;j<datarange[0].length;j++){ newpage.replaceAllText('{'+datarange[0][j]+'}', datarange[i][j]); } var image = datarange[i]['プロフィール画像のURLが格納されている列の列番号'].replace('open?','uc?export=view&'); try{ newpage.getImages()[0].replace(image); }catch(e){ Logger.log(image); } } }
Step5: Googleスライドに出力された結果を確認する
スクリプトを実行すると、Googleフォームの回答内容がスライドに反映された事が確認できます。(下図はクリックで拡大できます。)
私の中で資料作成といえばパワポが原則でスライドマスターやカラーテンプレおよびショートカットやアドイン(と少しばかりのマクロ)を使って効率化を図ってきたのですが、Googleフォームとの連携が容易にできるのはやはりGoogleプロダクトの強みですね。
テンプレ化/ルーチン化でき、かつ細部にこだわる必要のない資料はGoogleスプレッドシート, Googleスライド, GASで済ませてしまうのが良いかもしれません。