<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	xmlns:media="http://search.yahoo.com/mrss/">

<channel>
	<title>GASタマイズ</title>
	<atom:link href="https://gastomize.benri-life.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://gastomize.benri-life.com</link>
	<description>GoogleWorkspaceを使って業務効率化のための仕組みを構築するブログ</description>
	<lastBuildDate>Tue, 24 Aug 2021 14:28:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8</generator>

<image>
	<url>https://gastomize.benri-life.com/wp-content/uploads/2021/04/i_icon_16070_icon_160700_32.png</url>
	<title>GASタマイズ</title>
	<link>https://gastomize.benri-life.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">194809487</site>	<item>
		<title>【プログラミング基礎】for文で同じ処理を繰り返す</title>
		<link>https://gastomize.benri-life.com/google-apps-script/588/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Mon, 23 Aug 2021 15:03:21 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://gastomize.benri-life.com/?p=588</guid>

					<description><![CDATA[プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。基本的な動きというだけあって、どのプログラミング言語 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。<br>プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。<br>基本的な動きというだけあって、どのプログラミング言語を扱ったとしても必ず登場します。</p>



<p>GASではGoogle Formの回答を取得する際、spreadSheetの複数行に対して同様の処理をする際など繰り返し文を使う場面が多く登場します。<br>同じような処理を何度も繰り返して実行したい場合、その処理を繰り返したい回数記述すると、下記のような問題が起こります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#34a853;border:1px solid #34a853;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M20.062 11.469c0-0.266-0.094-0.531-0.281-0.719l-1.422-1.406c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-6.375 6.359-3.531-3.531c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-1.422 1.406c-0.187 0.187-0.281 0.453-0.281 0.719s0.094 0.516 0.281 0.703l5.656 5.656c0.187 0.187 0.453 0.297 0.703 0.297 0.266 0 0.531-0.109 0.719-0.297l8.484-8.484c0.187-0.187 0.281-0.438 0.281-0.703zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>処理を繰り返したい回数記述することで起こる問題</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #34a853;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>動的に繰り返す回数が変化する場合に対応できない</li><li>事前に繰り返す回数がわかっていないと記述できない</li><li>プログラムを記述する段階で繰り返す回数がわからなくなる</li></ul>
</div></div>



<p>プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きがあり、同じような処理を何度も繰り返し実行したい時は「繰り返し」の構文を使用します。<br>この記事を読むことで繰り返し文の種類とそれぞれの使い方、使用する上での注意点がわかります。</p>



<p>同じ処理の繰り返しがあれば、シンプルに書くことができますので、ぜひマスターしてください。</p>



<h2><strong>繰り返し構文とは</strong></h2>



<p>繰り返し構文はブロック内の処理を繰り返すための構文です。</p>



<p>中括弧（{}）で囲ったブロック内の処理を「繰り返す条件がtrue」もしくは「規定回数を繰り返す」まで繰り返し、繰り返しが終了したら次の処理に進みます。</p>



<p>「繰り返す条件がずっとtrue」の場合、永遠に繰り返すので注意が必要です（無限ループと言います）。</p>



<h2><strong>繰り返し構文の種類</strong></h2>



<p>GASで使用できる繰り返し構文はwhile文、for文、for…in文の3種類があります。<br>同じ繰り返しを表す構文ですが、使用する場面によって使い分けが必要だったり、使用する上での注意点も様々あります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#34a853;border:1px solid #34a853;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M20.062 11.469c0-0.266-0.094-0.531-0.281-0.719l-1.422-1.406c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-6.375 6.359-3.531-3.531c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-1.422 1.406c-0.187 0.187-0.281 0.453-0.281 0.719s0.094 0.516 0.281 0.703l5.656 5.656c0.187 0.187 0.453 0.297 0.703 0.297 0.266 0 0.531-0.109 0.719-0.297l8.484-8.484c0.187-0.187 0.281-0.438 0.281-0.703zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>繰り返し文の使用上のポイント</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #34a853;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>while文は終了条件をどのように設定するかがポイント</li><li>for文は規定回数をどのように設定するかがポイント</li><li>for…in文は順不同で要素を取り出す</li></ul>
</div></div>



<h3><strong>while</strong>文</h3>



<p>while文は「条件式を用いた繰り返し文」です。[条件式]がtrueの場合にブロック内の処理が実行されます。<br>ブロック内の処理が実行されるたびに、[条件式]を評価して繰り返すか、ループを抜けるか判定します。[条件式]がfalseになるとループ処理を抜けて次の処理に進みます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">while([条件式]) {
    // 条件式がtrueの場合に実行される処理
}</code></pre>



<p>ブロック内でループを抜ける条件を設定してあげないと、[条件式]が常にtrueとなってしまい、繰り返し処理を抜けることができなくなってしまいます。<br>繰り返し処理を抜けることができず、永遠と繰り返すことを<strong>無限ループ</strong>と言います。<br>無限ループに陥ってしまった場合は「キャンセル」をクリックすることでスクリプトの実行を停止できます。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffe0;border:2px solid #dadb00;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<p class="has-medium-font-size"><strong>無限ループ</strong></p>



<p>while文を使う際に、いつまでも条件を満たしていて、繰り返しを抜けられなくなってしまいます。<br>これを<strong>無限ループ</strong>と言います。<br>while文を使用する場合は無限ループにならないようにプログラミングしましょう。</p>
</div></div>



<h3><strong>for</strong>文</h3>



<p>for文は「繰り返し回数をあらかじめ設定して使用する繰り返し文」です。<br>for文は繰り返した回数をカウントする「<strong>カウンタ変数</strong>」を利用して繰り返しを制御します。<br>「繰り返し処理を◯回実行したらループを抜ける」というように、繰り返す回数をあらかじめ決めておき、決められた回数だけ処理を繰り返します。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (初期化式; 条件式; 増減式) {
    // 条件式がtrueの場合に実行される処理
}</code></pre>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>参考</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>初期化式：カウンタ変数の初期値を決めるための式</li><li>条件式：カウンタ変数を用いた条件式で、trueの間はforループが実行される</li><li>増減式：毎回の繰り返しでブロックないの処理の最後に実行される式で、一般的にはカウンタ変数の値を増減させる式</li></ul>
</div></div>



<p>for文はあらかじめ繰り返す回数が決まっているので無限ループの心配はないですが、繰り返す回数をどのように設定するかがポイントとなります。</p>



<h3><strong>for…in</strong>文</h3>



<p>for…in文は「オブジェクトの全てのプロパティ数分繰り返す文」です。あるオブジェクトのプロパティを変数に取り出して、オブジェクトのプロパティ分繰り返しブロック内の処理を実行しまます。</p>



<p>変数にはプロパティの名称が格納されます。プロパティに格納されている値を取得したい場合はブラケット記法を用いてオブジェクト[変数]とする必要があります。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (変数 in オブジェクト) {
    // ループ内で実行する処理
}</code></pre>



<p>for…in文でオブジェクト内のプロパティを取り出す際は、プロパティを定義順ではなく順不同で取り出すことに注意が必要となります。</p>



<h3><strong>breakでループを中断する</strong></h3>



<p>繰り返し文はbreak文を使って途中で中断することができます。</p>



<p>中断したい条件をif文で指定してbreak文を記述しますので、if文もセットで覚えておくと良いでしょう。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (var i=0; i &lt; 10; i++) {
    Logger.log(“i=%s”, i);
    if (i > 5) {
        break;
    }
}</code></pre>



<h3><strong>continueでループをスキップする</strong></h3>



<p>continueはループをスキップします。breakはループを中断しますので次の処理に進みますが、continueは次の繰り返しを実行するという違いがあります。<br>現在のループだけをスキップして繰り返し処理自体は継続したい場合に使用するのがcontinueです。</p>



<p>スキップしたい条件をif文で指定してcontinue文を記述しますので、こちらもbreak文同様、if文とセットで覚えておくと良いでしょう。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (var i=0; i &lt; 10; i++) {
    if (i == 5) {
        continue;
    }
    Logger.log(“i=%s”, i);
}</code></pre>



<h2><strong>GAS</strong>でよく使う例</h2>



<p>Google FormやGoogle SpreadSheetでGASを利用する場合、for文をよく利用します。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffe0;border:2px solid #dadb00;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>Google Formでは受け付けた回答を取得して処理する場合</li><li>Google SpreadSheetでは複数行のデータを処理する場合</li></ul>
</div></div>



<p>上記の使用例を実際に見てみます</p>



<h3><strong>Google</strong>フォームの回答をみる</h3>



<p>Googleフォームが送信されたタイミングでスクリプトを動作させて、回答情報を取得しています。</p>



<p>回答情報は<code>itemResponses</code>の配列に格納されていますので、回答情報を取り出す際はfor文を使って、回答情報の数だけループさせて取り出すようにすると良いでしょう。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (var i = 0; i &lt; itemResponses.length; i++) {
    // 質問と回答のセットを一つ取り出す
    var itemResponse = itemResponses[i];

    // 質問を取り出す
    var question = itemResponse.getItem().getTitle();

    // 回答を取り出す
    var answer = itemResponse.getResponse();

    // ループ内で実行する処理
}</code></pre>



<h3>Google<strong>スプレッドシートのセルをみる</strong></h3>



<p>Googleスプレッドシートは簡易データベースとして利用することが多く、顧客情報や商品情報などを書き記している場合が多いと思います。</p>



<p>スプレッドシートに記録されている全てのデータにアクセスするためにfor文を使ってループさせます。<br>その際のループ回数の指定方法は行数となるわけですが、データを追加するたびにGASを修正していたのでは大変です。</p>



<p>なので、<code>getLastRow()</code>という<strong>データがある最終行数を取得するメソッド</strong>を使用して、ループさせる回数を決めています。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">// データが入力されている行数分繰り返す
for (var row=0; row &lt; sheet.getLastRow() - 1; row++) {
    // ループ内で実行する処理
}</code></pre>



<h2><strong>まとめ</strong></h2>



<p>「繰り返し」の構文について、解説しました。<br>同じような処理を何度も繰り返して実行したい時は「繰り返し」の構文を使用して、記述量を減らしていきましょう。</p>



<p>GASだけでなく、様々なプログラミング言語で登場し、記述方法も同じですので、ここで紹介した方法で覚えておいて間違いありません。</p>



<p>GASではGoogle Formの回答を取得する際やspreadSheetの複数行に対して同様の処理をする際に繰り返し文を使うこと多いでしょう。<br>無限ループに気をつけて、繰り返し回数を動的に設定できるように工夫して使ってみてください。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#000000;background-color:#fbbc05;border:1px solid #fbbc05;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 28 28"><path d="M16 21.484v-2.969c0-0.281-0.219-0.516-0.5-0.516h-3c-0.281 0-0.5 0.234-0.5 0.516v2.969c0 0.281 0.219 0.516 0.5 0.516h3c0.281 0 0.5-0.234 0.5-0.516zM15.969 15.641l0.281-7.172c0-0.094-0.047-0.219-0.156-0.297-0.094-0.078-0.234-0.172-0.375-0.172h-3.437c-0.141 0-0.281 0.094-0.375 0.172-0.109 0.078-0.156 0.234-0.156 0.328l0.266 7.141c0 0.203 0.234 0.359 0.531 0.359h2.891c0.281 0 0.516-0.156 0.531-0.359zM15.75 1.047l12 22c0.344 0.609 0.328 1.359-0.031 1.969s-1.016 0.984-1.719 0.984h-24c-0.703 0-1.359-0.375-1.719-0.984s-0.375-1.359-0.031-1.969l12-22c0.344-0.641 1.016-1.047 1.75-1.047s1.406 0.406 1.75 1.047z" fill="#000000"></path></svg></span><span>各繰り返し構文の注意点</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #fbbc05;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>while文を使用する場合は、無限ループに気をつける</li><li>for文を使う場合はループ回数の指定を工夫する</li><li>for…in文はオブジェクトのプロパティに対して使用する</li><li>breakでループを中断する</li><li>continueでループをスキップする</li></ul>
</div></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">588</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/08/664309-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【プログラミング基礎】条件分岐で思い通りに制御する</title>
		<link>https://gastomize.benri-life.com/google-apps-script/546/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Sun, 15 Aug 2021 11:56:52 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://gastomize.benri-life.com/?p=546</guid>

					<description><![CDATA[プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。基本的な動きというだけあって、どのプログラミング言語 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。<br>プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。<br>基本的な動きというだけあって、どのプログラミング言語を扱ったとしても必ず登場します。</p>



<p>この記事ではプログラミングの基本の中でも「条件分岐」についてを解説していこうと思います。<br>この記事を読むことで、プログラムの「条件分岐」がどのようなことをいうのかわかります。</p>



<p>「条件分岐」を使いこなせると、データの状態によって処理を分岐させたり、本来入力されていないといけないデータが入力されていない場合にエラーとするなど、複雑で堅牢なシステムを作るようになれますので、ぜひマスターしてください。</p>



<h2><strong>条件分岐とは</strong></h2>



<p>「条件分岐」は条件を満たす場合に処理をさせたい時に使います。「もし○○の場合、▲▲の処理を実行する」という書き方が基本型です。</p>



<p>「条件分岐」を使うことで、ある条件を元に実行する処理を分けることができます。<br>例えば、「信号が『青』なら進め、信号が『青以外』なら止まれ」という動きを条件分岐で表すとこのようになります。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青) {
  進む
} else {
  止まる
}</code></pre>



<p>「&amp;&amp;」や「||」を使って、色々な条件を組み合わせて記載することができますが、組み合わせる条件が増えるほど複雑になり、不具合が発生するリスクが高まるので注意が必要です。<br>複数条件が指定されている場合は記載されている順に評価されます。</p>



<p>「&amp;&amp;」と使うと先ほどの条件分岐に「歩行者がいない」という条件を追加できます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青 &amp;&amp; 歩行者がいない) {
  進む
} else {
  止まる
}</code></pre>



<p>このプログラムだと、<strong>信号が青で歩行者がいなければ進む</strong>とちょっと賢い動きをするようになります。<br>逆に以下の場合はelseの処理が実行されるので止まります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>elseの処理が実行される条件</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>信号が赤か黄色で歩行者がいる</li><li>信号が青でも歩行者がいる</li><li>信号が赤か黄色で歩行者がいない</li></ul>
</div></div>



<h2>if<strong>文を使った条件分岐</strong></h2>



<p>条件分岐はif文、上述したif〜else文を含め5種類ほど書き方があります。</p>



<p>それぞれの意味を理解しておくと、思った通りにプログラムを制御でき、より簡単にプログラムを書くことができるようになります。</p>



<h3>if<strong>文</strong></h3>



<p>if(条件式){処理}と書いて、［条件式］がtrueなら［処理］を処理します。［条件式］の部分には必ずtrueかfalseの値をとるような式が記述されます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>if文の構文</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<pre class="wp-block-luxe-blocks-syntaxhighlighter"><code>if (条件式) {
  // 条件式がtrueの場合に実行する処理
}</code></pre>
</div></div>



<p>信号の例を用いると「信号が青でない場合、止まる」と記述すると信号が青の場合だけ進むように制御することができます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青でない) {
  止まる
}</code></pre>



<h3>if<strong>〜</strong>else<strong>文</strong></h3>



<p>if(条件式){処理A} else {処理B}と書いて、［条件式］がtrueなら［処理A］を処理し、［条件式］がfalseなら［処理B］を処理します。<br>条件によって、実行したい処理を分けたい時に有効な手段です。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>if〜else文の構文</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<pre class="wp-block-luxe-blocks-syntaxhighlighter"><code>if (条件式) {
  // 条件式がtrueの場合に実行する処理
} else {
  // 条件式がfalseの場合に実行される処理
}</code></pre>
</div></div>



<p>信号の例で書いた記述はこちらの方法です。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青) {
  進む
} else {
  止まる
}</code></pre>



<h3>if~else if<strong>文</strong></h3>



<p>上述のif〜else文よりも分岐の数が多い(分岐条件を3つ以上)場合に使用します。必要な分だけ分岐を追加でき、記述した順に条件を判定します。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>if〜else if文の構文</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<pre class="wp-block-luxe-blocks-syntaxhighlighter"><code>if (条件式1) {
  // 条件式1がtrueの場合に実行する処理
} else if (条件式2) {
  // 条件式2がtrueの場合に実行される処理
･･･
} else {
  // 全ての条件式がfalseの場合に実行される処理
}</code></pre>
</div></div>



<p>信号の例を用いると、下記のように書くことができます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青) {
  進む
} else if (信号が黄色) {
  止まる
} else if (信号が赤) {
  止まる
}</code></pre>



<h2><strong>条件式を複数指定する</strong></h2>



<p>ifの［条件式］は「&amp;&amp;」や「||」の<strong>論理演算子</strong>を使うことで複数の条件を判定できます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if ([条件式1] &amp;&amp; [条件式2]) {
    // 処理
}</code></pre>



<p>「&amp;&amp;」はAND条件を表していて、左辺と右辺の両方がtrueの場合に実行されます。</p>



<p>なので例に挙げた信号の例は「信号が青」かつ「歩行者がいない」という2つの条件がtrueなら進むように制御しています。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (信号が青 &amp;&amp; 歩行者がいない) {
  進む
} else {
  止まる
}</code></pre>



<p>もう少し実用的な例として、strという変数がnullでない、かつ空でない場合trueを返却し、そうでない場合はfalseを返却するという処理ができます。<br>これはstrの変数に何か有効な値が入っているかどうかのチェックをする場合によく使うロジックです(開発現場ではnullチェックと表現されたりします)。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (str != null &amp;&amp; str != ‘’) {
   return true;
}
return false;</code></pre>



<p>「||」はOR条件を表していて、左辺と右辺のどちらかがtrueの場合に実行されます。</p>



<p>例えば、strという変数がnullまたは空の場合、trueを返却し、そうでない場合はfalseを返却するという処理ができます。<br>これはisEmpty()というメソッドを作る際によく利用されるロジックです。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (str == null || str == ‘’) {
   return true;
}
return false;</code></pre>



<p>演算子についての説明は「<a href="https://gastomize.benri-life.com/google-apps-script/542/#toc_id_4_4" data-type="URL" data-id="https://gastomize.benri-life.com/google-apps-script/542/#toc_id_4_4" target="_blank" rel="noreferrer noopener">変数や演算子を使った処理</a>」で解説しています。</p>



<h2>switch<strong>文を使った条件分岐</strong></h2>



<p>if〜else if〜else if・・・と「else if」が続いてしまう場合、switch文を使うとシンプルに記述できます。</p>



<p>switch文はswitch()の括弧内の値を評価し、caseの値が一致した場合case節の処理を実行し、一致するcaseが無い時はdefault節が実行されます。<br>case節はcase〜break;まで処理されます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>switch文の構文</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<pre class="wp-block-luxe-blocks-syntaxhighlighter"><code>switch(条件式) {
  case 値1:
    // 式 === 値1だった時の処理
    break;
  case 値2:
    // 式 === 値2だった時の処理
    break;
  ･･･
 　default:
    // 式が全て値に合致しなかった時の処理
}</code></pre>
</div></div>



<p>if~else if文の例をswitch文で表現すると次のように書くことができます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">switch(信号の色) {
  case 青:
    進む
    break;
  case 黄色:
    止まる
    break;
  case 赤:
    止まる
 　 break;
}</code></pre>



<h2><strong>まとめ</strong></h2>



<p>if文やswitch文を使ってある条件を満たす場合に処理することを「条件分岐」と言います。<br>「条件分岐」を使うことで、実行したい処理を制御することができるようになります。</p>



<p>条件分岐は<code>if (条件式) {処理}</code>が基本の形でいくつかの書き方があり、条件式も論理演算子を使うことで複数の条件を書くことができます。</p>



<p>条件を満たす場合に処理させる以外にも、予期しないエラーを発生させないためのチェック処理を行う使い方もあります。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (x != ‘’) {
  // 処理を終了する
}</code></pre>



<p>堅牢なシステムを作るには、事前チェック処理が欠かせません。その肝になるのがif文による条件分岐なので、しっかりと理解して自在に使えるようになっておくと良いでしょう。</p>



<p>以上が条件分岐の解説でした。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">546</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/08/664309-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【プログラミング基礎】変数や演算子を使った処理</title>
		<link>https://gastomize.benri-life.com/google-apps-script/542/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Sat, 31 Jul 2021 14:39:26 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://gastomize.benri-life.com/?p=542</guid>

					<description><![CDATA[プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。 プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。基本的な動きというだけあって、どのプログラミング言 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。</p>



<p>プログラミングには「順次（処理）」「条件分岐」「繰り返し」という基本的な動きが存在します。<br>基本的な動きというだけあって、どのプログラミング言語を扱ったとしても必ず登場します。</p>



<p>この記事ではプログラミングの基本の中でも「順次（処理）」と「基本構文」についてを解説して行こうと思います。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px double #b5e28a;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>「順次（処理）」とはどのようなことを言うのか</li><li>変数を宣言して使用するにはどのようにしたら良いのか</li><li>プログラムの基本的な構文</li><li>よく使う演算子と使い方</li></ul>
</div></div>



<p>この記事を読むことで、プログラムの「処理」がどのようなことをいうのかわかります。<br>また、プログラムを構成する基本構文がわかりますので、興味がある方はぜひ読んでみてください。</p>



<h2>「順次（処理）」とは</h2>



<p>「順次（処理）」を説明する前に、「プログラム」について軽く触れて行こうと思います。<br>「プログラム」はコンピュータに実行させる命令の集まりで、コンピュータは「プログラム」に記述された命令を上から順に処理していきます。<br>この「命令を上から順に処理する」ということを「順次（処理）」と言います。</p>



<p>プログラムは順番が変われば実行結果が変わってしまうので、実行する順序を整理してプログラミングすることが大切になります。</p>



<h2>命令を書く</h2>



<p>プログラミングの際は実行したい順に、1つの命令をセミコロンで区切って記述していきます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
	// ログを出力する
	Logger.log('Hello! World.');
}</code></pre>



<p>この例だと<code>Logger.log('Hello! World.');</code>の部分が「ログを出力しなさい。」という命令になります。</p>



<p>例でも出ていますが命令は波括弧({})でグループ化でき、関数や制御構文(if文やfor文)で利用できます(ブロックと呼ぶ)。<br>myFunctionという関数は波括弧({})で囲まれている<code>Logger.log('Hello! World.');</code>の部分となります。</p>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>プログラムを書くことを「プログラミング」と言います。</p></div></div></div>



<h2>変数を使う</h2>



<p>プログラムを書いていると必ず登場する存在が「変数」です。変数はデータを入れる箱として捉えるとイメージしやすくなります。<br>変数に入れることができるのは、数値や文字列だけでなくオブジェクトなど複雑なものも入れることができます。</p>



<p>変数を使うには使用する前に「宣言」することが必要になります。<br>下記の例では、変数を宣言した後、空文字で初期化(変数を使用できる状態にすること)を行なっています。</p>



<p>「変数はデータを入れる箱」と言うくらいなので、変数にデータを入れる方法があります。<br>変数にデータを入れるには「代入演算子」というものを使います。<br>代入演算子は「=」で表現されるので、数学のイコールと混同しがちなので、要注意です。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
	// 変数を宣言し、空文字で初期化
	var str = '';

	// 宣言した変数に、文字列を代入する
	str = 'Hello! World.';

	// ログを出力する
	Logger.log(str);
}</code></pre>



<h2>演算子を使う</h2>



<p>変数にデータを入れるためには「代入演算子」を使用します。<br>「演算子」は<strong>プログラミングを行う際に使う、何らかの処理を行うための記号</strong>で、代入演算子を含め、大きく3種類が存在します。</p>



<p>主な演算子はこの後紹介しますが、ここで紹介している演算子以外にもインクリメント(デクリメント)演算子や三項演算子など多くの演算子が存在します。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>演算子の種類</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>代入演算子→変数にデータを入れる</li><li>算術演算子→四則演算(加算、減算、乗算、除算)と剰余演算を行う</li><li>比較演算子→等しい、大なり、小なりなどの比較を行う</li></ul>
</div></div>



<h3>代入演算子</h3>



<p>代入演算子は変数に値を代入するために使います。</p>



<p>単に代入するために使う以外に演算結果を代入する演算子も存在ます。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>演算子(記号)</th><th>説明</th><th>使い方</th><th>変数xが10の場合の演算結果</th></tr></thead><tbody><tr><td>=</td><td>左辺の変数に値を代入する</td><td>x = 5;</td><td>xに5が代入される</td></tr><tr><td>+=</td><td>左辺の値に右辺の値を加算して代入する</td><td>x += 2;</td><td>xに12が代入される</td></tr><tr><td>-=</td><td>左辺の値から右辺の値を減算して代入する</td><td>x -= 2;</td><td>xに8が代入される</td></tr><tr><td>*=</td><td>左辺の値に右辺の値を乗算して代入する</td><td>x *= 2;</td><td>xに20が代入される</td></tr><tr><td>/=</td><td>左辺の値を右辺の値で除算して代入する</td><td>x /= 2;</td><td>xに5が代入される</td></tr><tr><td>%=</td><td>左辺の値を右辺の値で除算した余りを代入する</td><td>x %= 2;</td><td>xに0が代入される</td></tr></tbody></table><figcaption>代入演算子の一覧</figcaption></figure>



<h3>算術演算子</h3>



<p>算術演算子は四則演算と剰余演算を行うために使用します。</p>



<p>「+」や「-」は数学でもお馴染みですが、掛け算の「*」や割り算の「/」などはプログラム独特の表現です。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>演算子(記号)</th><th>説明</th><th>使用できる処理</th></tr></thead><tbody><tr><td>+</td><td>四則演算の加算を行う。</td><td>数値の足し算、文字列連結</td></tr><tr><td>&#8211;</td><td>四則演算の減算を行う。</td><td>数値の引き算</td></tr><tr><td>*</td><td>四則演算の乗算を行う。</td><td>数値の掛け算</td></tr><tr><td>/</td><td>四則演算の除算を行う。</td><td>数値の割り算</td></tr><tr><td>%</td><td>剰余演算を行う(ある数値を別の数値で除算し、余りを取得する)。</td><td>数値の剰余演算</td></tr></tbody></table><figcaption>算術演算子の一覧</figcaption></figure>



<h3>比較演算子</h3>



<p>比較演算子は左辺と右辺の比較を行います。</p>



<p>数学でも馴染みのある、「&lt;」や「&gt;」の記号やNOTを意味する「!」を使います。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>演算子(記号)</th><th>説明</th></tr></thead><tbody><tr><td>==</td><td>左辺と右辺が等しければtrue</td></tr><tr><td>!=</td><td>左辺と右辺が等しくなけれtrue</td></tr><tr><td>&lt;</td><td>左辺が右辺より小さければtrue</td></tr><tr><td>&lt;=</td><td>左辺が右辺以下であればtrue</td></tr><tr><td>&gt;</td><td>左辺が右辺より大きければtrue</td></tr><tr><td>&gt;=</td><td>左辺が右辺以上であればtrue</td></tr><tr><td>===</td><td>左辺と右辺がデータ型も含めて等しければtrue</td></tr><tr><td>!==</td><td>左辺と右辺がデータ型も含めて等しくなければtrue</td></tr></tbody></table><figcaption>比較演算子の一覧</figcaption></figure>



<h3>論理演算子</h3>



<p>「AかつB」を表す<strong>AND演算</strong>、「AまたはB」を表す<strong>OR演算</strong>、「Aではない」を表す<strong>NOT演算</strong>を行うのが論理演算子です。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>演算子(記号)</th><th>説明</th></tr></thead><tbody><tr><td>&amp;&amp;</td><td>左辺と右辺がいずれもtrueならばtrue</td></tr><tr><td>||</td><td>左辺と右辺のどちらかがtrueならばtrue</td></tr><tr><td>!</td><td>条件の真偽を反転させる</td></tr></tbody></table><figcaption>論理演算子の一覧</figcaption></figure>



<h2>まとめ</h2>



<p>プログラミングの基本となる動き「順次（処理）」について、解説してきました。<br>「順次（処理）」とは命令を上から順に処理する動きのことを言います。<br>プログラムは順番が変われば実行結果が変わってしまうので、注意しましょう。</p>



<p>命令の最小単位は「ステートメント」と言われ、セミコロン(;)で区切られます。<br>変数はデータを入れる箱で、まとめて宣言したい時は配列を使うと簡単に宣言できるので使い分けられるとよいでしょう。</p>



<p>変数にデータを入れるには代入演算子を使って代入します。<br>演算子は代入演算子の他に、「算術演算子」「比較演算子」などがあります。<br>高度なものになると「インクリメント演算子」や「三項演算子」というものもありますので、興味がある方は調べてみてください。<br>使いこなせると便利です。</p>



<p>以上、プログラミングの基本となる動き「順次（処理）」と基本構文についてでした。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">542</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/04/2483610-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【初心者にオススメ】GASを使ったプログラミング学習の始め方、勉強法</title>
		<link>https://gastomize.benri-life.com/google-apps-script/217/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Sat, 26 Jun 2021 05:38:07 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=217</guid>

					<description><![CDATA[プログラミングを勉強したいけれど、どう始めたらいいんだろう？何から始めればいいんだろう？という方、いらっしゃると思います。プログラムを勉強するには、実際に書いて、動かしてみることが一番勉強になります。 ですが、プログラム [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>プログラミングを勉強したいけれど、<strong>どう始めたらいいんだろう？何から始めればいいんだろう？</strong>という方、いらっしゃると思います。<br>プログラムを勉強するには、実際に書いて、動かしてみることが一番勉強になります。</p>



<p>ですが、プログラムを書き、動かすためには3つの環境を用意しなければならず、いきなりハードルが上がります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>プログラムを書いて、動かすために必要な環境</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>プログラムを記述する環境</li><li>プログラムをコンパイルする環境</li><li>プログラムを実行/デバッグする環境</li></ul>
</div></div>



<p>「プログラムを記述する環境」はメモ帳でも代用はできます(非常にやりにくいのでオススメはしませんが・・・)。</p>



<p>システムエンジニアはプログラムを書いて、動かすための3つの環境をまとめた「統合開発環境」というものを使ってプログラムを書いてシステムを構築しているのですが、「統合開発環境」を用意するだけでも手間がかかります。<br>(構築し慣れているシステムエンジニアでも1日以上かかります)</p>



<p>Google Apps Script(GAS：読み「ガス」)というJavaScriptベースのプログラミング言語を使って始め方と勉強方法を紹介しようと思います。</p>



<p>どうしてGoogle Apps Scriptなの？という疑問もあるかと思います。<br>Google Apps Scriptは統合開発環境が<strong><span class="luxe-hilight-yellow">Googleから提供されている</span></strong>ので、特別な環境を構築しなくてもすぐにプログラミングとプログラムの実行ができるメリットがあります。</p>



<p>さらに無料のGoogleアカウントを作成すれば利用できるので、ハードルが非常に低いので、プログラミングの学習に集中して取り組むことができると思っています。</p>



<p>この記事では、Google Apps Scriptでプログラミングを始めるための準備から基本的な構文、勉強方法を解説します。</p>



<p>この記事が、プログラミング学習のとっかかりになって、学習を進める手助けができたらと思います。</p>



<h2>Google Apps Scriptでプログラミングするための準備</h2>



<p>Google Apps Scriptでプログラミングを始めるために必要なものはこちらです。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>Google Apps Scriptを開始するために準備するもの</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul class="memo"><li>パソコン</li><li>Googleアカウント</li><li>Google Chrome（Edge、FireFox、Safariなどのブラウザでも可）</li></ul>
</div></div>



<p>パソコン以外は無料で準備可能となっています。<br>Google Apps Scriptはブラウザがあればプログラミング可能となっているので、パソコンに最初からインストールされているブラウザを使っても良いですが、Google Chromeを利用するとコンテンツアシストの機能が使えるので、プログラミングがしやすいです。</p>



<h3>パソコン</h3>



<p>Google Apps Scriptのプログラミングはブラウザがあればできるとは言っても、スマホには対応していません。<br>タブレット(iPad)はプログラミングできましたが、反応が鈍く作業があまり進みません。</p>



<p>パソコンであれば、Windows、Macどちらでも良いので使いやすい方を選ぶとよいと思います。</p>



<h3>Googleアカウントを作成</h3>



<p>通常の<a href="https://support.google.com/accounts/answer/27441?hl=ja" target="_blank" rel="noreferrer noopener" aria-label="Googleアカウントを作成する手順 (新しいタブで開く)">Googleアカウントを作成する手順</a>に沿って、Googleアカウントを作成します。</p>



<p>Google Apps Scriptを利用しなくてもGmailやGoogleドライブといった便利なサービスが無料で使えるので持っておいて損はないでしょう。</p>



<h3>Google Chromeをインストール</h3>



<p>ブラウザは何でも良いですが、Google Chromeを使うとコンテンツアシストなど便利な機能を使うことができます(他のブラウザではなぜかコンテンツアシストが機能しません)。GoogleChromeは<a rel="noreferrer noopener" aria-label="Goole Chromeのインストール手順 (新しいタブで開く)" href="https://support.google.com/chrome/answer/95346?co=GENIE.Platform%3DDesktop&amp;hl=ja" target="_blank">Goole Chromeのインストール手順</a>に沿ってインストールします。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffe0;border:2px solid #dadb00;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<p class="memo has-small-font-size"><strong>コンテンツアシスト</strong><br>プログラミング中にオブジェクトに定義されているメソッドや定数の一覧を表示して、プログラミングの入力を補完してくれる機能です。</p>
</div></div>



<h2>プログラミングを始める</h2>



<p>ここからはプログラミングの始め方を紹介します。</p>



<h3>スクリプトエディタを起動する</h3>



<p>まずはスクリプトエディタを起動します。</p>



<p>スクリプトエディタはGoogleが提供するGoogle Apps Scriptをプログラミングするための統合開発環境です。<br>Google Apps Scriptのスクリプトの編集、実行、デバッグなどを行うための専用のエディタで開発を支援するための機能が搭載されています。</p>



<p>スクリプトエディタを起動するには、まずGoogleドライブでスプレッドシートを作成します。<br>(「新規」→「Googleスプレッドシート」を選択して作成します)</p>



<p>スプレッドシートが開いたら、「ツール」→「スクリプトエディタ」を選択すると、スクリプトエディタが起動します。</p>



<h3>簡単なサンプルプログラム</h3>



<p>スクリプトエディタが起動したら、スクリプトを編集していきます。<br>ここでは簡単なサンプルを紹介します。</p>



<p>プログラムの内容は「Hello World!!」をダイアログで出力します。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  Browser.msgBox('Hello World!!');
}</code></pre>



<p>編集が完了したら、保存して、「<img src="https://s.w.org/images/core/emoji/13.1.0/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" />」のボタンをクリックすれば実行できます。<br>実行してみると、ブラウザのタブをスプレッドシートに切り替えると、「Hello World!!」と書かれたダイアログが表示されていると思います。</p>



<p>ここまでがGASを0から立ち上げる手順になります。</p>



<h2>プログラムの基本的な構文</h2>



<p>プログラミングはプログラミング言語を使って記述します。<br>プログラミング言語はC言語、Java、PHPなど様々あるのですが、どの言語を使っても登場する基本的な構文があります。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:1px dashed #e896c7;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>変数や演算子を使った処理</li><li>条件分岐</li><li>繰り返し</li><li>メソッド(関数)呼び出し</li></ul>
</div></div>



<p>私自身、今まで6言語(C、C++、C#、Java、PHP、JavaScript)ほど現場で扱うことがありましたが、上記の構文は全てに登場しますし、文法も変わらないです。<br>システムはメソッド(関数)の集まり、メソッド(関数)は演算、比較、繰り返しの集まりなので。</p>



<h3>変数や演算子を使った処理</h3>



<p><strong>変数</strong>は値を入れておくための箱。この変数に数値や文字列といった<strong>値(情報)</strong>を入れて、加工するなど活用していきます。</p>



<p>変数に値を入れたり、プログラム上で計算を行うには<strong>演算子(えんざんし)</strong>を使用します。<br>中でも代入演算子(=)、算術演算子(+、-、*、/、%など)、比較演算子(==、&lt;、&gt;)はよく利用するので、覚えておくと良いです。</p>



<p>下記のサンプルは変数strに「おはようございます。」という文字列を代入しています。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">var str = ‘おはようございます。’;</code></pre>



<p>変数や演算子を使った処理は「<a href="https://gastomize.benri-life.com/google-apps-script/542/" data-type="URL" data-id="https://gastomize.benri-life.com/google-apps-script/542/" target="_blank" rel="noreferrer noopener">変数や演算子を使った処理</a>」の記事で詳しく解説しているので、参考にしてみてください。</p>



<h3>条件分岐</h3>



<p>プログラムを記述していくと、ある条件によって、処理を分岐させたい場合が出てきます。<br>処理を分岐させたい時に使用するのは<strong>if文「もし●●なら▲▲する」</strong>です。</p>



<p><strong>if文</strong>は下記のように記述します。<br>「もし条件式がtrueなら、ブロック({}で括られた部分)内の処理を実行する」ようになります。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">if (条件式) {
  // 条件式がtrueの場合に実行する処理
}</code></pre>



<p>if文以外にも条件分岐を行う命令はあります。</p>



<p>条件分岐についての解説は「<a href="https://gastomize.benri-life.com/google-apps-script/546/" data-type="URL" data-id="https://gastomize.benri-life.com/google-apps-script/546/" target="_blank" rel="noreferrer noopener">条件分岐で思い通りに制御する</a>」の記事にまとめていますので、参考にしてみてください。</p>



<h3>繰り返し</h3>



<p>同じ処理を複数回繰り返す場合に使用すると良いのが、繰り返しの構文(while、forなど)です。<br>ある条件を満たしている間繰り返すのが<strong>while文</strong>、予め決まった回数繰り返すのが<strong>for文</strong>という使い方をします。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">for (初期値;繰り返し条件;増減式) {
  // 繰り返したい処理をここに記述する
}</code></pre>



<p></p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffe0;border:2px solid #dadb00;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<p><strong>無限ループ</strong><br>while文を使う際に、いつまでも条件を満たしていて、繰り返しを抜けられなくなってしまいます。これを<strong>無限ループ</strong>と言います。<br>while文を使用する場合は無限ループにならないようにプログラミングしましょう。</p>
</div></div>



<h3>メソッド(関数)呼び出し</h3>



<p>一連の処理をまとめたものを<strong>メソッド(関数)</strong>として定義し、別の関数から呼び出すことができます。<br>下記の例では「sayHello」というメソッドを定義し、myFunctionから呼び出しています。</p>



<p>「sayHello」はログを出力しているだけですが、<strong>引数</strong>を指定して値を受け取って処理したり、<strong>戻り値</strong>を指定して処理した結果を呼び出した関数に戻すことができます。</p>



<p>Google Apps Scriptで使用する<code>GmailApp.sendEmail()</code>などもメソッド(関数)ですので、同じように呼び出すことができます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  // メソッド(関数)を呼び出す
  sayHello();
}

function sayHello() {
  Logger.log('Hello!');
}</code></pre>



<h2>勉強方法</h2>



<p>勉強方法は大きく分けて、独学かスクールに通うかの2つです。</p>



<p>私はシステムエンジニアということもあって、書籍、公式リファレンス(英語です。日本語に対応しているようでしていませんでした・・・)やWebサイトを見ながら独学で進めてもすぐに理解できました。</p>



<p>独学の場合は、都合の良い時間に勉強することができます。<br>題材が与えられているわけではなく、期限的なものもないので自由に進められます。</p>



<h3>書籍</h3>



<p>Google Apps Scriptに関する書籍もありますので、書籍を使って学習することもできます。</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:23% auto"><figure class="wp-block-media-text__media"><img src="https://benri-life.com/wp-content/uploads/2020/03/81bsSCHPU4L-808x1024.jpg" alt="" class="wp-image-1483 size-full"/></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">私はこちらの書籍を使って学習を進めました。</p>



<p class="has-normal-font-size"><strong>よく利用されるサービス</strong>にフォーカスを当てて、詳しく解説しているので、これから学習をスタートさせる際には活用したい一冊です。</p>
</div></div>



<p></p>



<h3>公式リファレンス</h3>



<p>上でもチラッと出しましたが、GASには公式リファレンスがあります。<br>基本英語(言語を日本語にしても翻訳されず・・・)です。</p>



<p>【Google Apps Script公式リファレンス】<br>→<a href="https://developers.google.com/apps-script/reference">https://developers.google.com/apps-script/reference</a></p>



<p></p>



<h3>スクール</h3>



<p>スクールも開設されているようですが、Google Apps Scriptを専門的に教えてくれるスクールは私の知る限りだと「Tech Academy」のGoogle Apps Scriptコースがそれだと思います。</p>



<p>「Tech Academy」では学習に必要な「題材」が用意されていて、現役のエンジニアがメンターとしてマンツーマンでサポート(週2回、1回30分)してくれます。</p>



<p>システムエンジニアなのでプログラミング始めたての頃は現場で先輩が教えてくれました。<br>わからないところは2~3個まとめて聞いて、後は実践・・・<br>そうやってプログラミングを覚えることができました。</p>



<p>それと同じ環境が整うと思うとスクールもありなのかなと思います。</p>



<h2>まとめ</h2>



<p>プログラミング学習を進めたい方向けにオススメの勉強方法をご紹介しました。<br>GASを使った勉強をオススメするポイントは3つです。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>オススメポイント</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>Google Apps Scriptは統合開発環境をGoogleが提供してくれているので、プログラミングに集中できる</li><li>Googleアカウント、PC、ブラウザがあれば、無料ですぐにでも開始でき、簡単に動かすことができる</li><li>JavaScriptがベースとなっていて、基本構文を学ぶには十分である</li></ul>
</div></div>



<p>プログラミング言語はC言語、Java、PHPなど色々ありますが、ここでご紹介した<strong>プログラムの基本構文</strong>はどの言語使ったとしても必ず登場します。<br>どの言語を使っても覚えることができて、どの言語でも使えるのでGASで覚えても構いません。</p>



<p>GASであれば、<strong>統合開発環境</strong>は整っている状態で作ったプログラムをすぐに実行できます。<br>Googleスプレッドシート、GoogleドキュメントなどのOffice系のサービスに対して、ちょっとしたツールを作りたい時も簡単に利用できるので、<strong>プログラムを作った</strong>という体験がすぐにできるのも魅力です。</p>



<p>これからプログラミングを始めてみようという方は是非お試しください。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">217</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/04/2483610-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【Googleフォームの意外な使い方】Googleフォームでバッチ実行画面を簡単に作る！</title>
		<link>https://gastomize.benri-life.com/google-forms-service/441/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Sun, 23 May 2021 13:57:50 +0000</pubDate>
				<category><![CDATA[GoogleForms]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=441</guid>

					<description><![CDATA[GoogleAppsScriptでサーバーの裏側で動くようないわゆるバッチ処理を動作させるには予め起動する時間を設定しておくか、PCのブラウザからスクリプトエディタを立ち上げて、実行ボタンをクリックする必要があります。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>GoogleAppsScriptでサーバーの裏側で動くようないわゆるバッチ処理を動作させるには予め起動する時間を設定しておくか、PCのブラウザからスクリプトエディタを立ち上げて、実行ボタンをクリックする必要があります。</p>



<p>予定時刻以外の時間に起動する必要がある場合、たった1つのコマンドで実行できるバッチ処理をわざわざPCを立ち上げて起動するのは少し面倒です。</p>



<p>通常はアンケート、参加申請などの投稿フォームとして利用するGoogleフォームですが、少し工夫するとスマホからバッチ処理を起動する画面として使えることをご存知でしょうか。<br>そこで本記事では「Googleフォームの意外な使い方」と題して、Googleフォームからバッチ処理を実行する方法と実例を3つほどご紹介します。</p>



<p>本記事を読んでGoogleフォームを業務運用にうまく利用できれば、<br>下記のようなケースが発生した場合、スマホからいつでも、どこからでも実行できるようになりますので、ぜひご活用ください。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#34a853;border:1px solid #34a853;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M20.062 11.469c0-0.266-0.094-0.531-0.281-0.719l-1.422-1.406c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-6.375 6.359-3.531-3.531c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-1.422 1.406c-0.187 0.187-0.281 0.453-0.281 0.719s0.094 0.516 0.281 0.703l5.656 5.656c0.187 0.187 0.453 0.297 0.703 0.297 0.266 0 0.531-0.109 0.719-0.297l8.484-8.484c0.187-0.187 0.281-0.438 0.281-0.703zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>活用ポイント</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #34a853;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>予め起動する時刻を設定しておく定期処理を臨時で起動する</li><li>決まった手順の作業を自動化しておき、好きなタイミングで起動する</li></ul>
</div></div>



<h2>Googleフォームをバッチ処理を実行する画面として利用する</h2>



<p>具体的な実装方法を説明する前に、ざっくりと全体の概要を説明します。<br>この仕組みはGoogleフォームで「送信」ボタンを押したあとに、GoogleAppsScriptを起動できることを利用して、GoogleAppsScript内でバッチ処理を起動することで、Googleフォームからバッチ処理を実行しています。</p>



<p>バッチ処理起動時に何らかのパラメータが必要な場合は、Googleフォームの入力項目として用意し、起動する時に入力するようにします。</p>



<p>Goolgeフォームから入力された値をif文で判定することで、フォームから実行するバッチ処理を変えることもできます。</p>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>バッチ処理とは画面の操作によるプログラムの実行ではなく、コンピュータでひとまとまりのデータを一括して処理するやり方です。<br>(参考：<a rel="noreferrer noopener" href="https://ja.wikipedia.org/wiki/バッチ処理" data-type="URL" data-id="https://ja.wikipedia.org/wiki/バッチ処理" target="_blank">Wikipedia</a>)</p></div></div></div>



<h2>実装手順</h2>



<p>実装する手順は下記の3ステップです。<br>手順1と手順2でそれぞれ必要なフォームとバッチ処理を作成して、手順3で合わせていく手順となります。</p>



<p>バッチ実行画面とバッチ処理の詳細は仕様によりけりな内容となりますが、大まかに3ステップで作成可能です。<br>すでに運用しているバッチ処理があるならばそれを画面から実行できるようにすることもできます。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px dashed #f2bf7d;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ol><li>バッチ実行画面にするGoogleフォームを作成する</li><li>実行するバッチ処理を作成する</li><li>バッチ実行画面のスクリプトから手順2で作ったバッチ処理を呼び出す</li></ol>
</div></div>



<h3>Googleフォームを作成</h3>



<p>まずはバッチを実行するためのページをGoogleフォームで作成します。<br>ただ実行するだけであれば、入力項目は何も設定しなくてよいですが、バッチにパラメータを設定する場合は、入力項目として設定してスクリプトで読み込みます。<br>GoogleAppsScriptでフォームから入力されたデータを取得する方法については<a href="https://googleapps.benri-life.com/google-forms-service/234/" data-type="URL" data-id="https://googleapps.benri-life.com/google-forms-service/234/">Googleフォームの作り方とScriptでの回答の取得方法</a>で解説していますので参考にしてください。</p>



<h3>実行するバッチ処理を作成</h3>



<p>次に実行するバッチ処理を作成します。バッチ処理の作成は2種類の方法があります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>バッチ処理の作成方法</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>Googleフォームなどのサービスからスクリプトエディタで処理を作成する(コンテナバインド)</li><li>バッチ専用のプロジェクトで作成する(スタンドアロンスクリプト)</li></ul>
</div></div>



<p>1つ目の「スクリプトエディタで処理を作成する」は、Googleフォームのスクリプトエディタを立ち上げて、処理を記述していきます。<br>直接書き込むので、わかりやすいですですが、Googleフォームに紐づいているので、スクリプトの保存場所が変わりにくくなるため管理が大変になります。</p>



<p>2つ目の「スタンドアロンスクリプト」はGoogleドライブにプロジェクトファイルを直接保存します。<br>Googleドライブ上にプロジェクトファイルが見えるので、フォルダ分けして管理することができます。</p>



<p>リンク：スタンドアロンスクリプトの作成と実行方法</p>



<h3>バッチ処理をGoogleフォームのスクリプトから呼び出す</h3>



<p>最後に実行するバッチ処理をGoogleフォームのスクリプトから呼び出します。</p>



<p>下記の例はGoogleフォームからパラメータを入力して<code>mySample()</code>というバッチ処理を呼び出します。<br>実は<code>mySample()</code>という関数はGoogleAppsScriptには存在していない関数で、自作で作ったスタンドアロンスクリプトの関数になります。<br>単に受け取ったパラメータを<code>console.info()</code>でログに出力しているものです。</p>



<p>【バッチ実行画面】</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  // work変数
  var parameter;

  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容をパラメータとして取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    if (question == 'パラメータ') {
      parameter = answer;
    }
  }

  // バッチ処理を実行する
  SampleBatch.mySample(parameter);
}</code></pre>



<p>【バッチ処理】</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function mySample(parameter) {
  console.info('処理を実行しました。：' + parameter);
}</code></pre>



<p><code>mySample()</code>の中に実行したい処理を書くことになります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#000000;background-color:#fbbc05;border:1px solid #fbbc05;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 28 28"><path d="M16 21.484v-2.969c0-0.281-0.219-0.516-0.5-0.516h-3c-0.281 0-0.5 0.234-0.5 0.516v2.969c0 0.281 0.219 0.516 0.5 0.516h3c0.281 0 0.5-0.234 0.5-0.516zM15.969 15.641l0.281-7.172c0-0.094-0.047-0.219-0.156-0.297-0.094-0.078-0.234-0.172-0.375-0.172h-3.437c-0.141 0-0.281 0.094-0.375 0.172-0.109 0.078-0.156 0.234-0.156 0.328l0.266 7.141c0 0.203 0.234 0.359 0.531 0.359h2.891c0.281 0 0.516-0.156 0.531-0.359zM15.75 1.047l12 22c0.344 0.609 0.328 1.359-0.031 1.969s-1.016 0.984-1.719 0.984h-24c-0.703 0-1.359-0.375-1.719-0.984s-0.375-1.359-0.031-1.969l12-22c0.344-0.641 1.016-1.047 1.75-1.047s1.406 0.406 1.75 1.047z" fill="#000000"></path></svg></span><span>注意点</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #fbbc05;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<p>スタンドアロンスクリプトをGoogleフォームのスクリプトとして実行するには「<strong>ライブラリ</strong>」タブで追加する必要があります。<br>(スタンドアロンスクリプトでなくてもGoogleフォームのスクリプト内に定義することもできます)</p>
</div></div>



<h2>バッチ処理を実行するためにGoogleフォームを利用するメリット</h2>



<p>Googleフォームでバッチ処理を実行するための画面を作っておくと、<br>いざバッチ処理を実行しなければいけない時にサッと実行できるので、とても有益なものかと思います。</p>



<p>Googleフォームで作るとレスポンシブWebデザインを意識しなくてもスマホ/PCの両方で見やすい画面が簡単にできるので、<br>作る手間も省けます。</p>



<p>質問を設定することで、実行する際のパラメータも簡単に設定できるので、<br>実行する画面としては問題ないレベルのものが出来上がるのではないかと思います。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>【Googleフォームを利用するメリット】</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>自分の好きなタイミングでバッチ処理を実行できる</li><li>簡単にスマホで操作しやすい画面ができる</li><li>パラメータを送信して実行する仕組みも簡単に作成できる</li></ul>
</div></div>



<h2>Googleフォームの意外な使い方の例</h2>



<p>Googleフォームでバッチ実行画面の使用例を3つほどご紹介しようと思います。詳しいプログラムについてはそれぞれのリンク先で解説しています。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>バッチ実行画面の使用例</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li><strong>アップロードしたCSVファイルの内容をGoogleスプレッドシートに転記する</strong></li><li><strong>Googleフォームの回答先スプレッドシートを切り替えるツール</strong></li><li><strong>Googleフォームの集計結果をメールで送付する</strong></li></ul>
</div></div>



<h3>アップロードしたCSVファイルの内容をGoogleスプレッドシートに転記する</h3>



<p>バッチ処理ではないですが、アップロードされたcsvファイルを読み込んで、Googleスプレッドシートに自動転記するようにします。<br>csvファイルはGoogleドライブからアップロードすることもできるのですが、<br>Googleスプレッドシートに転記するには1度開くアクションが必要となります。<br>数が少なければよいのですが、数が多くなってくると開くアクションだけでも相当な手間となり、時間を取られる作業かと思います。<br>Googleフォームを使ってアップロードして、同時にスクリプトを実行してGoogleスプレッドシートに転記する作業を自動化してしまうと、ただcsvファイルを開くだけの作業から解放されます。</p>



<p>リンク：csvファイルをGoogleスプレッドシートに転記する</p>



<h3>Googleフォームの回答先スプレッドシートを切り替えるツール</h3>



<p>Googleフォームは受け付けた回答をGoogleスプレッドシートに連携する機能があります。<br>設定するにはGoogleフォームの作成画面から行うことができるのですが、<br>「フォームとスプレッドシートのリンクを解除」→「回答先を選択」から新しいスプレッドシートを設定する必要があります。</p>



<p>この「フォームとスプレッドシートのリンクを解除」→「回答先を選択」から新しいスプレッドシートを設定する作業をGoogleAppsScriptで自動化すると、<br>Googleフォームから呼び出して、ある投稿フォームの回答先スプレッドシートを切り替えることができるツールとなります。</p>



<p>リンク：Googleフォームの回答先スプレッドシートを切り替えるツール</p>



<h3>Googleフォームの集計結果をメールで送付する</h3>



<p>Googleフォームで作った投稿フォームの回答内容を集計して、メールの文章にして送付するツールです。<br>報告用に総回答数、参加人数などサマリデータを送る必要がある場合など、メール本文をScriptで作成して自分に送るようにして、<br>チェックして問題なければコピー&amp;ペーストで報告用メールを作成するという使い方ができます。</p>



<p>参考：<a href="https://googleapps.benri-life.com/google-apps-script/218/" data-type="URL" data-id="https://googleapps.benri-life.com/google-apps-script/218/">Googleフォームの集計結果をメールで送付する</a></p>



<h2>まとめ</h2>



<p>Googleフォームの意外な使い方ということで、概要と実例を紹介しました。<br>アンケートや申し込みフォームといった、意見収集や申し込みだけではなく、内部の運用ツールとしても使えるというのは少し意外だったのではないでしょうか。<br>運用ツールのために1からWeb画面を作るよりGoogleフォームを使う方が幾分か楽に作れるかと思いますので、いいね！と思っていただけたらお試しください。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">441</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/05/2062951-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【Google Apps Script(GAS)】Googleフォームの作り方とScriptでの回答の取得方法</title>
		<link>https://gastomize.benri-life.com/google-forms-service/234/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Sat, 15 May 2021 05:36:41 +0000</pubDate>
				<category><![CDATA[GoogleForms]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=234</guid>

					<description><![CDATA[Googleフォームというサービスをご存知の方は多いと思います。簡単に投稿用のフォームが作れて、無料で使えるので重宝している方も多いのではないでしょうか。 単に投稿するだけのフォームは簡単に作れますが、GoogleApp [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Googleフォームというサービスをご存知の方は多いと思います。簡単に投稿用のフォームが作れて、無料で使えるので重宝している方も多いのではないでしょうか。</p>



<p>単に投稿するだけのフォームは簡単に作れますが、GoogleAppsScriptを併用するとGmailやGoogleドライブといった他のGoogleのサービスと連携して高度な動きもプラスできるので、無料とは思えないほどとても優秀なサービスです。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>GoogleAppsScriptを併用した動きの例</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>アップロードされた画像ファイルをある規則に沿って自動的にリネームする</li><li>フォームに投稿されたことを管理者にメールで通知する</li><li>投稿を受け付けたことを投稿者にメールでお知らせする</li></ul>
</div></div>



<p>GoogleフォームをGoogle Apps Scriptでカスタマイズする際、「回答内容を取得する」処理は必ず実行すると言っていいほど頻繁に行います。<br>しかし、回答を取得する方法は質問の種類によってバラバラで、間違った取得方法だと意図しない処理実行されたり、場合によっては強制終了してしまいます。</p>



<p>回答の取得方法は<a rel="noreferrer noopener" href="https://developers.google.com/apps-script/reference" data-type="URL" data-id="https://developers.google.com/apps-script/reference" target="_blank">Google公式リファレンス</a>にも掲載されていないので、実装者が手探りで見つけるしかありません。<br>(取得方法のパターンとしては3つだけなので手探りでもできなくはないですが、調査に一手間かかります。。。)</p>



<p>そこで本記事では、Googleフォームで使用できる質問の種類と質問の種類に応じた回答の取得方法をまとめていこうと思います。</p>



<p>この記事を見れば、全ての質問の種類についてGoogleフォームで回答を取得する際にどのように実装すれば良いかがわかります。<br>取得した回答内容を使って、様々な処理をScriptに実装することができるので、知っておいて損はないと思います。</p>



<h2>Googleフォームとは</h2>



<p>Googleフォームの作り方と回答の取得方法を説明する前に、念のためGoogleフォームとは何かを簡単にご紹介します。<br>初耳の方は、便利ですので使ってみてください。</p>



<p>GoogleフォームはGoogleが提供する無料で使える投稿フォーム作成サービスです。<br>Googleアカウントを持っていれば使用することができ、直感的に質問を追加できてわかりやすいので、簡単に導入ができるのが魅力です。<br>Webで公開するページはプログラム(HTML、CSS、JavaScript)が必要となりますが扱えなくても作成でき、回答内容をGoogleスプレッドシートに記録できる他、GoogleAppsScriptを使うことでGmail等その他のサービスとも連携できます。</p>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>コードを書かずに投稿フォームが作成できる、<br>いわゆる「ノーコード」と呼ばれるサービスです。</p></div></div></div>



<h2>投稿フォームを作るための手順(6ステップ)</h2>



<p>Googleフォームで投稿フォームを作成する手順は下記の6つです。<br>質問の数に応じて手順2〜手順4を繰り返し行います。</p>



<p>手順5のプレビューで確認して、質問を追加したい！ここをもうちょっと変えたい！など変更があれば手順2に戻って修正していきます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>アンケート作成手順</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ol><li>Googleドライブから「Googleフォーム」を起動する(新規作成メニューにない場合は追加する必要あり)。</li><li>「質問を追加」を押下し、設問を追加する。</li><li>「質問のタイトル」、「質問の種類」を選択する。</li><li>タイプによっては選択肢を追加するなど、細いか設定を行う。</li><li>質問の追加が完了したら、プレビューを表示して確認する。</li><li>プレビューで確認が終わったら、投稿フォームを公開します。公開方法は「メールで送信する」「リンクを教える」「Webページに埋め込む」の３つです。</li></ol>
</div></div>



<h2>質問の種類</h2>



<p>質問の種類は下記の11種類があり、質問の種類によって回答の取得方法がありますが、大きくString、String[]、String[][]の3種類に分類されます。<br>このあと、それぞれ解説していきます。</p>



<p>全てString型(配列も含め)となっているがポイントで、「均等目盛」の項目は数字に見えて実は文字となっているので計算する場合は注意が必要です。<br>「日付」、「時刻」も計算(日付を進めたり、戻したり)する時には、Date型に変換が必要となります。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>質問の種類</th><th>回答の型(取得方法)</th></tr></thead><tbody><tr><td>記述式</td><td>String</td></tr><tr><td>段落</td><td>String</td></tr><tr><td>ラジオボタン</td><td>String</td></tr><tr><td>チェックボックス</td><td>String[]</td></tr><tr><td>プルダウン</td><td>String</td></tr><tr><td>ファイルアップロード</td><td>String[]</td></tr><tr><td>均等目盛</td><td>String</td></tr><tr><td>選択式(グリッド)</td><td>String[]</td></tr><tr><td>チェックボックス(グリッド)</td><td>String[][]</td></tr><tr><td>日付</td><td>String</td></tr><tr><td>時刻</td><td>String</td></tr></tbody></table><figcaption>質問の種類と回答の型</figcaption></figure>



<h3>記述式</h3>



<p>記述式は「改行ができないテキスト入力」です。「氏名」「メールアドレス」などの改行させない項目に利用されます。<br>入力内容はフリー入力になりますが、改行をさせない以外に下記のように入力内容をチェックして、不適合の場合はエラーにしてフォームを送信させないことも可能です。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>設定できるエラーチェック</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>数値チェック</li><li>テキスト形式チェック(指定文字列を含む/含まない、メールアドレス、URL)</li><li>文字列長チェック(最大文字列、最小文字列)</li><li>正規表現</li></ul>
</div></div>



<p>入力内容チェックエラーが発生した場合、エラーメッセージが表示されます。<br>エラーメッセージはデフォルトのものがありますが、変更することも可能です。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == '記述式'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>段落</h3>



<p>段落は「改行ができるテキスト入力」です。「お問合せ内容」など、長文の入力に利用されます。<br>入力内容はフリー入力になりますが、下記のように入力内容をチェックして、<br>不適合の場合はエラーにしてフォームを送信させないことも可能です。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>設定できるエラーチェック</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>文字列長チェック(最大文字列、最小文字列)</li><li>正規表現</li></ul>
</div></div>



<p>入力内容チェックエラーが発生した場合、エラーメッセージが表示されます。<br>エラーメッセージはデフォルトのものがありますが、変更することも可能です。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == '段落'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>ラジオボラン</h3>



<p>ラジオボタンは「複数の選択肢の中から一つだけ選択できる入力」です。<br>ラジオボタンの入力は選択肢の設定とフォーム回答者に入力を要求できる「その他」の設定を行います。<br>この質問では、下記のような設定もできます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>ラジオボタンの設定内容</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>選択した内容に応じて移動するセクションを変更する</li><li>選択肢の順番をシャッフルする</li></ul>
</div></div>



<p>例えば、ラジオボタンで性別を選択させて、回答次第で「男性向けの質問セクション」と「女性向けの質問セクション」に移動先を分けることができます。<br>選択肢の順番をシャッフルするは、テスト問題として利用すると有効かもしれません。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == 'ラジオボタン'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>チェックボックス</h3>



<p>チェックボックスは「複数の選択肢の中から複数選択できる入力」です。<br>チェックボックスの入力は選択肢の設定とフォーム回答者に入力を要求できる「その他」の設定を行います。<br>この質問では、下記のような設定もできます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>チェックボックスの設定</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>選択肢の順番をシャッフルする</li><li>選択する個数をチェックできる(最低個数、最多個数、個数)</li></ul>
</div></div>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    // String[]形式で取得できる質問
    if (question == 'チェックボックス') {
          for (var j = 0; j &lt; answer.length; j++) {
            console.log(question + '\[' + j + '\]' + ' : ' + answer[j]);
          }
    }
  }
}</code></pre>



<h3>プルダウン</h3>



<p>プルダウンは「複数の選択肢の中から一つだけ選択できる入力」です。<br>通常のWeb画面では複数選択できるプルダウンもありますが、Googleフォームのプルダウンでは択一のみです。<br>プルダウンの入力は選択肢の設定を行います。<br>この質問では、下記のような設定もできます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>プルダウンの設定</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>セクションを設けている場合、選択した内容に応じて移動するセクションを変更できる</li><li>選択肢の順番をシャッフルできる</li></ul>
</div></div>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>ラジオボタンとほぼ同じ用途の入力ですので、私はラジオボタンの選択肢が多くなったらプルダウンに切り替えて使っています。</p></div></div></div>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == 'プルダウン'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>ファイルアップロード</h3>



<p>ファイルアップロードは「ファイルをアップロードできる入力」です。<br>ファイルアップロードを選択するとGoogleドライブ上のフォームと同じフォルダにファイルの置き場所が新たに作られ、アップロードされたファイルはそこに格納されます。<br>アップロードできるファイル形式はGoogleドライブにアップロードできる全ての形式ですが、下記のどれかに特定することもできます(複数指定できる)。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>特定できるファイル形式</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>ドキュメント</li><li>スプレッドシート</li><li>プレゼンテーション</li><li>PDF</li><li>図形描画</li><li>画像</li><li>動画</li><li>音声</li></ul>
</div></div>



<p>「ファイルの最大数」「1ファイルあたりの最大サイズ」「ファイルの合計サイズ」を指定することもできます。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>制約事項</th><th>設定値</th></tr></thead><tbody><tr><td>ファイルの最大数</td><td>「1」「5」「10」から選択</td></tr><tr><td>1ファイルあたりの最大サイズ</td><td>「1MB」「10MB」「100MB」「1GB」「10GB」から選択</td></tr><tr><td>ファイルの合計サイズ</td><td>「1GB」「10GB」「100GB」「1TB」から選択</td></tr></tbody></table><figcaption>ファイルアップロード項目の設定</figcaption></figure>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    // String[]形式で取得できる質問
    if (question == 'ファイルアップロード') {
          for (var j = 0; j &lt; answer.length; j++) {
            console.log(question + '\[' + j + '\]' + ' : ' + answer[j]);
          }
    }
  }
}</code></pre>



<h3>均等目盛</h3>



<p>均等目盛は「開始が『0』or『1』、終了が『2』〜『10』までの設定できる目盛り入力」です。<br>レビューや口コミでよく見かける★に近い入力です。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == '均等目盛'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>選択式(グリッド)</h3>



<p>選択式(グリッド)は「行ごとに1つ選択できる入力」です。<br>1つの質問に対して、複数の観点で回答を要求する場合に使用できます。<br>例えば、ある料理に対して、「ご意見をください」という質問を用意して「味」「盛り付け」など複数の観点で回答が欲しい場合に利用できます。<br>質問によっては1列につき1つの回答に制限する必要がある場合も対応可能です。<br>行の並び替えがもできるのでテストの問題にも使えそうです。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    // String[]形式で取得できる質問
    if (question == '選択式(グリッド)') {
          for (var j = 0; j &lt; answer.length; j++) {
            console.log(question + '\[' + j + '\]' + ' : ' + answer[j]);
          }
    }
  }
}</code></pre>



<h3>チェックボックス(グリッド)</h3>



<p>チェックボックス(グリッド)は「各行で複数選択できる入力」です。<br>選択式(グリッド)と同様に1つの質問に対して、複数の観点で回答を要求する場合に使用できます。<br>1列につき1つの回答に制限する必要がある場合も対応可能です。<br>行の並び替えがもできるのでテストの問題にも使えそうです。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    // String[][]形式で取得できる質問
    if (question == 'チェックボックス(グリッド)') {
      for (var j = 0; j &lt; answer.length; j++) {
        for (var k = 0; k &lt; answer[j].length; k++) {
          console.log(question + '\[' + j + '\]' + '\[' + k + '\]' + ' : ' + answer[j][k]);
        }
      }
    }
  }
}</code></pre>



<h3>日付</h3>



<p>日付は「カレンダー選択式の日付入力」です。直接入力することもできます。<br>日付の形式は、下記の4通りが設定できます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>カレンダーの入力形式</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>年月日</li><li>月日</li><li>年月日 時分</li><li>月日時分</li></ul>
</div></div>



<p>日付のチェックは自動で設定されていて、存在しない日付(02/30など)を入力した場合はエラーとなります。<br>時刻も入力することができますが、直接入力のみで時分までです(入力できる範囲は00:00〜23:59)。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == '日付'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h3>時刻</h3>



<p>時刻は「時刻の入力」です。日付とは異なり、直接入力のみです。<br>回答の種類が「時刻」と「経過時間」の2種類あり、「時刻」は00:00〜23:59の範囲、「経過時間」の最大入力は「72:59:59」で入力できます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // String形式で取得できる質問
    if (question == '時刻'){
      console.log(question + ' : ' + answer);
    }
  }
}</code></pre>



<h2>まとめ</h2>



<p>Googleフォームを使った投稿フォームの作り方と投稿フォームに設定できる質問の種類、GoogleAppsScriptを使った際の回答の取得方法を解説してきました。</p>



<p>GoogleフォームはGoogleが提供する無料の投稿フォーム作成サービスで、6ステップと簡単に作れますが、GoogleAppsScriptと呼ばれるプログラムを使えば自由にカスタマイズして高度な動きを追加できる優秀なサービスです。</p>



<p>回答の種類は11種類あり、回答の取得方法は<code>itemResponse.getResponse()</code>ですが、取得結果のデータ型(データ型についてはこちらを参考：<a rel="noreferrer noopener" href="https://ja.wikipedia.org/wiki/データ型" data-type="URL" data-id="https://ja.wikipedia.org/wiki/データ型" target="_blank">Wikipedia</a>)がString、String[]、String[][]の3種類あります。<br>answerの変数がString、String[]、String[][]のどれかでデータの読み出し方が異なるということでした。</p>



<p>Googleフォームの回答を使ってGoogleAppsScriptを実行する時には回答の取得が必須になりますので、ぜひマスターして欲しい内容です。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">234</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/05/560025-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【Google Apps Script(GAS)】メール本文をテンプレートから読み込んで送付する</title>
		<link>https://gastomize.benri-life.com/google-apps-script/379/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Wed, 05 May 2021 13:56:50 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=379</guid>

					<description><![CDATA[「GoogleフォームでThankYouメールを自動返信する方法」でGoogle Apps Scriptでメールを送信する方法を解説していますが、こちらの解説ではメール本文をプログラム内で作成しているため、修正する時にい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px dashed #f2bf7d;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>Google Apps Script内で長文メールを記述するのは面倒</li><li>メール本文を手軽に書き換えられるようにしたい</li></ul>
</div></div>



<p>「<a href="https://googleapps.benri-life.com/google-apps-script/220/">GoogleフォームでThankYouメールを自動返信する方法</a>」でGoogle Apps Scriptでメールを送信する方法を解説していますが、こちらの解説ではメール本文をプログラム内で作成しているため、修正する時にいろいろと手間が発生します。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#ed8989;border:1px solid #ed8989;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M17.953 17.531c0-0.266-0.109-0.516-0.297-0.703l-2.828-2.828 2.828-2.828c0.187-0.187 0.297-0.438 0.297-0.703s-0.109-0.531-0.297-0.719l-1.406-1.406c-0.187-0.187-0.453-0.297-0.719-0.297s-0.516 0.109-0.703 0.297l-2.828 2.828-2.828-2.828c-0.187-0.187-0.438-0.297-0.703-0.297s-0.531 0.109-0.719 0.297l-1.406 1.406c-0.187 0.187-0.297 0.453-0.297 0.719s0.109 0.516 0.297 0.703l2.828 2.828-2.828 2.828c-0.187 0.187-0.297 0.438-0.297 0.703s0.109 0.531 0.297 0.719l1.406 1.406c0.187 0.187 0.453 0.297 0.719 0.297s0.516-0.109 0.703-0.297l2.828-2.828 2.828 2.828c0.187 0.187 0.438 0.297 0.703 0.297s0.531-0.109 0.719-0.297l1.406-1.406c0.187-0.187 0.297-0.453 0.297-0.719zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>修正する時の手間</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #ed8989;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>全体像が見えづらい</li><li>想定していた本文よりも改行が多い or 少ない</li><li>修正するたびに(正常に動作するかの)送信テストする必要がある</li></ul>
</div></div>



<p>プログラムで記述する場合は改行など特殊な文字はコードを使って記述されます。<br><code>ありがとうございます。\n\n</code>と書かれていても、改行が入ることが目で見てわかりづらいですね。<br>プログラムの記述方法を工夫してみやすくしておくこともできますが、それも手間です。</p>



<p>メール本文を修正した後も、念のため動作確認が必要となります(自信があればよいのですが・・・)。</p>



<p>その手間を解消するためにGoogleドキュメントでメールのテンプレートを作り、必要な部分だけプログラムで置換してあげるようにします。<br>そうすることでプログラムのテストは初回のみで、メール文面を修正した時はテスト不要となります。<br>改行も改行コードではなく、Enterの入力で設定できるようになり、全体像も把握しやすくなります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>メール本文をテンプレート化する手順</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>フォームを作成する</li><li>メール本文のテンプレートを作成する</li><li>プログラム内でメールテンプレートを読み込む</li><li>テンプレート内の置換対象文字列を置換する</li></ul>
</div></div>



<h2>フォームを作成する</h2>



<p>まずはフォームを作成します。<br>「Googleドライブ」の「新規」→「その他」メニューから「Googleフォーム」を選択してフォームを作成します。<br>メニューにない場合は「＋ アプリを追加」からメニューに追加してください。</p>



<p>Googleフォームが立ち上がったら質問を追加します。<br>フォームに追加する質問はなんでも良いのですが、自動返信に使用するので「お名前」の項目は必ず追加してください。</p>



<p>「設定」から「メールアドレスを収集する」にチェックを入れるとメールアドレスの質問が追加されます。<br>こちらも必ず設定してください。</p>



<p>Googleフォームの作成方法は「<a href="https://googleapps.benri-life.com/google-forms-service/234/">Googleフォームの作り方とScriptでの回答の取得方法</a>」で解説しています。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#000000;background-color:#fbbc05;border:1px solid #fbbc05;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 28 28"><path d="M16 21.484v-2.969c0-0.281-0.219-0.516-0.5-0.516h-3c-0.281 0-0.5 0.234-0.5 0.516v2.969c0 0.281 0.219 0.516 0.5 0.516h3c0.281 0 0.5-0.234 0.5-0.516zM15.969 15.641l0.281-7.172c0-0.094-0.047-0.219-0.156-0.297-0.094-0.078-0.234-0.172-0.375-0.172h-3.437c-0.141 0-0.281 0.094-0.375 0.172-0.109 0.078-0.156 0.234-0.156 0.328l0.266 7.141c0 0.203 0.234 0.359 0.531 0.359h2.891c0.281 0 0.516-0.156 0.531-0.359zM15.75 1.047l12 22c0.344 0.609 0.328 1.359-0.031 1.969s-1.016 0.984-1.719 0.984h-24c-0.703 0-1.359-0.375-1.719-0.984s-0.375-1.359-0.031-1.969l12-22c0.344-0.641 1.016-1.047 1.75-1.047s1.406 0.406 1.75 1.047z" fill="#000000"></path></svg></span><span>必ず行なってください</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #fbbc05;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>「お名前」の項目は質問に必ず追加する。</li><li>「設定」から「メールアドレスを収集する」にチェックを入れる</li></ul>
</div></div>



<h2>Googleドキュメントでテンプレートを作成する</h2>



<p>次にGoogleドキュメントでメール本文のテンプレートを作成します。<br>メール本文はお問い合わせに対する自動返信を想定して作っていこうと思います。</p>



<div class="wp-block-columns has-white-background-color has-background">
<div class="wp-block-column">
<pre class="wp-block-preformatted">※このメールはシステムからの自動返信です
&nbsp;
{{お名前}}様
&nbsp;
お問い合わせありがとうございました。
&nbsp;
以下の内容でお問い合わせを受け付けいたしました。
3営業日以内にご連絡いたしますので
今しばらくお待ちくださいませ。

——————————————————
GASタマイズ
——————————————————</pre>
</div>



<div class="wp-block-column">
<p>このようにテンプレートを用意しました。</p>



<p>ブラウザのGmailからメールを作成する感覚で改行を使って、全体的なレイアウトを整えたり、著名を付けています。</p>



<p><code>{{お名前}}</code>の部分はお問い合わせフォームの「お名前」の項目で入力された内容で置換する予定の部分です。</p>
</div>
</div>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>プログラムに直接書くより、見やすく作れます。</p></div></div></div>



<h2>作ったテンプレート使ってメール本文を作成する</h2>



<p>フォームとメールのテンプレートができたら、作ったテンプレートを読み取って、メール本文を作成するプログラムを記述していきます。<br>記述が終わったら自動返信の設定を忘れないようにしましょう。</p>



<h3>スクリプトエディタを起動してプログラムを書き込む</h3>



<p>まずは、プログラムを記述するために「<i class="fas fa-ellipsis-v">メニュー</i>」-&gt;「スクリプトエディタ」からスクリプトエディタを起動します。</p>



<p>全体のプログラムはこちらです。<br>プログラムはコピペで使用できますが、<strong>★テンプレートドキュメントのID</strong>の<code>'1234567890abcdefghi'</code>の部分を先に作ったテンプレート(Googleドキュメント)のIDに変更する必要がありますのでご注意ください。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">const MESSAGE_TEMPLATE_ID = '1234567890abcdefghi';    // ★テンプレートドキュメントのID
function sendThankYouMailWithTemplate(e) {
  // ワーク変数
  var name = '';
  
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();

  // 回答者のメールアドレスを取得
  var mail = e.response.getRespondentEmail();
  
  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    // 質問が「お名前」の場合
    if (question == 'お名前'){
      name = answer;
    }
  }
    
  // メッセージを作成
  var message = DocumentApp.openById(MESSAGE_TEMPLATE_ID).getBody().getText();
  message = message.replace('{{お名前}}', name);
  
  var title = 'お問い合わせを受け付けました。';
  GmailApp.sendEmail(mail, title, message);
}</code></pre>



<h2>プログラムの解説</h2>



<p>今回のポイントとなる箇所のプログラムを解説していきます。</p>



<p>メール本文に使うテンプレートを読み込むために、プログラムの冒頭でGoogleドキュメントのIDをconstで宣言しています。<br>このGoogleドキュメントのIDを使用してテンプレートをプログラム内で読み込むことができます。</p>



<p>引数に設定したeから<em>getItemResponses()</em>で回答情報を取得することができます。<br>取得した回答情報(<em>itemResponses</em>)は配列形式なので、<em>for</em>文で一つ一つ取り出していき「お名前」の項目の回答を抽出します。</p>



<p>メッセージを作成する部分をテンプレートから読み込むようにしています。<br><code>DocumentApp.openById(MESSAGE_TEMPLATE_ID).getBody().getText();</code>でGoogleドキュメントをStringで読み込むことができます。<br>読み込んだテンプレートを基に<code>message.replace('{{お名前}}', name);</code>でアンケートの回答から取得した「お名前」で置換しています。</p>



<h2>フォームが送信された時に動くようにトリガーを設定する</h2>



<p>プログラムが書けたら、「トリガー」を設定していきます。</p>



<p>「トリガー」とは、プログラムを実行するきっかけだと思ってください。<br>トリガーを設定することで「毎日実行する」、「フォームの入力内容が送信されたら実行する」などプログラムに合わせて、実行タイミングを設定します。</p>



<p>今回の自動返信であれば、「フォームの入力内容が送信されたら実行する」を設定していくことになります。</p>



<h3>トリガーの設定ダイアログを開く</h3>



<p>トリガーを設定するために「トリガー設定ダイアログ」を立ち上げます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>トリガーの設定ダイアログの立ち上げ方</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:32% auto"><figure class="wp-block-media-text__media"><img width="714" height="692" src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39.png" alt="" class="wp-image-367 size-full" srcset="https://gastomize.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39.png 714w, https://gastomize.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39-300x291.png 300w" sizes="(max-width: 714px) 100vw, 714px" /></figure><div class="wp-block-media-text__content">
<p>スクリプトエディタの左メニューから「トリガー」を選択すると設定されているトリガーを確認できる一覧画面が開きます。<br>一覧画面の右下に「<i class="fas fa-plus">  トリガーを追加</i>」ボタンをクリックすると図のようなダイアログが立ち上がります。</p>
</div></div>
</div></div>



<h3>トリガーを設定する</h3>



<p>「トリガー設定ダイアログ」が立ち上がったら、設定を行なっていきます。<br>いくつか設定項目がありますが、下記の項目を変更して「保存」ボタンをクリックてください。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px double #b5e28a;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<p>実行する関数を選択：myFunction<br>イベントのソースを選択：フォームから<br>イベントの種類を選択：フォームの送信時</p>
</div></div>



<p>これで自動返信機能をつける作業は終わりになります。<br>最後にテストをしてしっかり動くことを確認しましょう。</p>



<h2>フォームから入力を送信してテストする</h2>



<p>「プログラムの書き込み」と「トリガーの設定」が終わったら、<strong><span style="color: #ff0000" class="text-color">プログラムがしっかり動いて、自動返信が届くこと</span></strong>を確認します。<br>実はプログラムがちゃんと動いていなかった・・・、トリガーの設定内容を間違っていたなどがあると意図した通りに動かないので、最後にしっかりと確認するようにしてください。</p>



<h2>まとめ</h2>



<p>自動送信するメールをGoogleドキュメントを使ってテンプレート化する方法を解説しました。<br>テンプレート化することで、プログラムで修正が必要な文章とあらかじめ作っておける文章を分けることができるので、メンテナンスが簡単になります。</p>



<p>メール自体も読みやすいレイアウトにしたり、装飾をしたりするので、Googleドキュメントで書くことで編集しやすいメリットがあるかと思います。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">379</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/05/2485634-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【Google Apps Script (GAS)】Scriptからメールを送信する方法と全9オプションの設定方法を解説！</title>
		<link>https://gastomize.benri-life.com/google-apps-script/228/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 13:43:29 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=228</guid>

					<description><![CDATA[Google Apps Scriptからメールを送信するというのは、よく利用する機能かと思いますが、オプションが設定できることをご存知でしょうか？ Scriptでメールが送信できるのはいいんだけど、CcやBccの設定や添 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Google Apps Scriptからメールを送信するというのは、よく利用する機能かと思いますが、オプションが設定できることをご存知でしょうか？</p>



<p>Scriptでメールが送信できるのはいいんだけど、CcやBccの設定や添付ファイルの送り方はどう設定すればいいの？<br>と思う方も多いかと思います。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffe0;border:2px solid #dadb00;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>オプション設定でどんなことができるのか</li><li>オプションで設定するのは分かったけど、具体的にどのように設定したらいいのか</li></ul>
</div></div>



<p>例えばCcやBccにメールアドレスを設定したい時やファイルを添付したい時にはオプションで設定する必要があります。</p>



<p>オプションに関する設定方法は<a rel="noreferrer noopener" href="https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)" target="_blank">Googleの公式リファレンス</a>にも一部しか載っておらず、具体的にどのように設定すれば良いかは実装者が考えるしかない状態です。<br>(しかも、javaScriptのオブジェクトで渡す必要があるため、ある程度プログラムの知識が必要です)</p>



<p>Google Apps Scriptに4年間触れいると、メール送信は頻繁に使います。<br>オプションの設定方法は知っておいた方がいいかなと思って、全てのオプションに関して設定方法と実際のコードと合わせてメモしています(コードは軽くテストしています)。</p>



<p>この記事では、Google Apps Scriptからメール送信方法と全てのオプション設定について、実際のコード付きで解説していきます。</p>



<p>この記事を読むことでGoogle Apps Scriptからのメール送信を完璧に使いこなすことができます。</p>



<h2>Scriptからメールを送信する方法</h2>



<p>まずはメール送信方法の基本から。<br>Google Apps Scriptのメール送信は<em><strong>GmailApp</strong></em>オブジェクトを使用します。<br><strong><em>GmailApp</em></strong>オブジェクトの<em>sendEmail</em>メソッドに「宛先のメールアドレス」、「件名」、「本文」を設定することで送信できます。</p>



<pre class="wp-block-preformatted"><code>GmailApp.sendEmail(宛先, 件名, メール本文);</code></pre>



<p>実際のコードは下記の通りです。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
    var to = "mike@example.com";       // ★宛先
    var subject = "send mail test";    // ★件名
    var body = "This is test."         // ★メール本文

    GmailApp.sendEmail(to, subject, body);
}</code></pre>



<h2>オプションを設定する方法</h2>



<p>ここからはオプション設定について解説していきます。</p>



<p>オプションの設定方法を解説する前に、どんなオプションが設定できるのかを確認しようと思います。<br>Cc、Bccやファイルを添付するなど日常的に使う設定やHTMLメールなどメルマガなどで使うような設定もできます。</p>



<p>使えるオプションは下の表の通りで、こちらは<a rel="noreferrer noopener" href="https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)" target="_blank">Googleの公式リファレンス</a>に載っています(英語です)。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>オプション名</th><th>タイプ<br>(設定する値の型)</th><th>内容説明</th></tr></thead><tbody><tr><td>attachments</td><td>BlobSource[]</td><td>電子メールで送信するファイルの配列。</td></tr><tr><td>bcc</td><td>String</td><td>BCCへの電子メールアドレスのコンマ区切りリスト。</td></tr><tr><td>cc</td><td>String</td><td>CCへの電子メールアドレスのコンマ区切りリスト。</td></tr><tr><td>from</td><td>String</td><td>電子メールの送信元アドレス。<br>getAliases（）によって返される値のいずれかである必要があります。</td></tr><tr><td>htmlBody</td><td>String</td><td>設定されている場合、HTMLをレンダリングできるデバイスは、必要なbody引数の代わりにHTMLを使用します。</td></tr><tr><td>inlineImages</td><td>Object</td><td>画像キー（String）から画像データ（BlobSource）へのマッピングを含むJavaScriptオブジェクト。<br>これは、htmlBodyパラメーターが使用され、これらの画像への参照が&lt;img src = &#8220;cid：imageKey&#8221; /&gt;の形式で含まれていることを前提としています。</td></tr><tr><td>name</td><td>String</td><td>電子メールの送信者の名前（デフォルト：ユーザーの名前）。</td></tr><tr><td>noReply</td><td>boolean</td><td>受信者が電子メールに返信しないように、一般的な返信なしの電子メールアドレスから電子メールを送信する場合はtrue。 <br>このオプションは、G Suiteアカウントでのみ使用でき、Gmailユーザーでは使用できません。</td></tr><tr><td>replyTo</td><td>String</td><td>デフォルトの返信先アドレスとして使用するメールアドレス（デフォルト：ユーザーのメールアドレス）。</td></tr></tbody></table><figcaption>設定できるオプション</figcaption></figure>



<h3>Cc、Bccを設定する</h3>



<p>Cc、Bccは通常のメールでもよく利用します。<br>To、Cc、Bccに設定する宛先はビジネスメールでは常識となっていますが、自動化したとしてもそれは変わらないです。</p>



<p>なので利用するケースによっては、メールのToは読んでほしい人、Ccは関係者に設定したい場合にはオプションに設定する必要が出てきます。</p>



<p>具体的な設定方法はこちらです。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var option = {
    cc:'bob@example.com',
    bcc:'catherine@example.com'
  };
  MailApp.sendEmail(to, subject, message, option);
}</code></pre>



<p>ccプロパティはCcに設定したい宛先、bccプロパティはBccに設定したい宛先を設定します。<br>複数人設定したい場合は、’bob@example.com,catherine@example.com’のようにコンマ(,)で区切りで設定します。</p>



<h3>attachmentsオプションで添付ファイルを設定する</h3>



<p>attachmentsオプションは添付ファイルをつけることができます。</p>



<p>添付するファイルを配列の形式で設定してあげます。<br>Google Apps Scriptの配列については、通常のJavaScriptの配列と同じなので、Web検索するとすぐに出てくると思います。<br>公式の情報が知りたい時は<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array">MDN公式リファレンス</a>に詳しく載っています。</p>



<p>attachmentsのオプションをつける例</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';
  var fileId = 'abcdefghijklmnopqrstuvwxyz';  // ★添付するファイルのファイルID

  var file = DriveApp.getFileById(fileId);
  var option = {
    attachments: [file.getAs(MimeType.PDF)]
  };
  GmailApp.sendEmail(to, subject, message, option);
}
</code></pre>



<p><em>DriveApp.getFileById(fileId)</em>で添付するファイルを取得します(添付ファイルはGoogleドライブに保存しておいてください)。</p>



<p>添付ファイルを取得したら、optionオブジェクトのattachmentsプロパティに取得したファイルを設定します。<br>設定する時には「<em>BlobSource</em>」型にする必要がありますが、<em>file.getAs(MimeType.PDF)</em>の部分で「<em>BlobSource</em>」型にしています。<br><em>MimeType.PDF</em>はPDFファイルの「<em>BlobSource</em>」型ということです。</p>



<h3>fromオプションで送信元アドレスを設定する</h3>



<p>fromオプションで送信元のアドレスを変更できます。<br>これはGmailの「設定」ｰ&gt;「アカウントとインポート」の「名前」項目で設定できるメールアドレスを使って送信できるというものです。</p>



<p>fromのオプションを設定する例</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var aliases = GmailApp.getAliases();
  if (aliases.length > 0) {
    var option = {
      from:aliases[0]
    };
    MailApp.sendEmail(to, subject, message, option);
  } else {
    MailApp.sendEmail(to, subject, message);
  }
}</code></pre>



<p><code>var aliases = GmailApp.getAliases();</code>の部分でGmailの「設定」ｰ&gt;「アカウントとインポート」の「名前」項目に設定しているエイリアスを取得しています(配列は0始まり)。<br>Google Apps Scriptの配列については、通常のJavaScriptの配列と同じなので、Web検索するとすぐに出てくると思います。<br>公式の情報が知りたい時は<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array">MDN公式リファレンス</a>に詳しく載っています。</p>



<p>エイリアスは配列で取得できるので、使用するエイリアスをfromプロパティに設定します。</p>



<h3>nameオプションで送信者名を設定する</h3>



<p>nameオプションはメールの送信者名を設定します。</p>



<p>何も設定せずにメールを送信した場合、宛先の相手にはメールアドレスか、電話帳の登録名が表示されます。<br>ですが、「運営事務局」などのようにこちらから意図した表示名を表示したい場合などはnameオプションで設定します。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var option = {
    name:'GASタマイズ-運営'
  };
  MailApp.sendEmail(to, subject, message, option);
}</code></pre>



<h3>htmlBodyオプションでHTMLメールにする</h3>



<p>htmlBodyオプションはHTMLメールを設定できます。<br>HTMLメールとは何かを知りたい方は<a rel="noreferrer noopener" href="https://ms.repica.jp/column/20190123_faq_htmlmail_textmail/" target="_blank">こちらのサイト</a>が参考になります。</p>



<p>このオプションを指定するとmessageで設定している本文は無視されて、HTMLで書かれたコードが本文に反映されます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var option = {
    htmlBody:'&lt;div style="color: red;">これはHTMLテストです。&lt;/div>'
  };
  MailApp.sendEmail(to, subject, message, option);
}</code></pre>



<p>htmlBodyプロパティで指定している’&lt;div style=“color: red;”&gt;これはHTMLテストです。&lt;/div&gt;’の部分により、メール本文では「<span style="color: #ff0000" class="text-color">これはHTMLテストです。</span>」の部分が赤字で届きます。</p>



<h3>inlineImagesオプションでHTMLメールで画像を参照する</h3>



<p>inlineImagesオプションはHTMLメールに画像が設定されている場合に、このオプションを使って表示する画像を設定してあげます。<br>このオプションの設定は少し複雑で、大きく2つの設定が必要です。</p>



<ol><li>htmlBodyオプションに設定したHTMLメール本文の中に画像タグである&lt;img src=“cid:imageKey”/&gt;を設定する</li><li>inlineImagesオプションに{imageKey: imageSource}の形式で表示したい画像を設定する</li></ol>



<p>これらの設定を行うと下記のコードになります。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var mailBody = '&lt;div style="color: red;">これはHTMLテストです。&lt;/div>'
               + '&lt;img src="cid:id-1"/>';
  var imageFile = DriveApp.getFileById('abcdefghijklmnopqrstuvwxyz');  // ★ファイルのファイルID

  var inlineImageObject = {
    'id-1': imageFile.getAs(MimeType.PNG)
  };
  var option = {
    htmlBody: mailBody,
    inlineImages: inlineImageObject
  };
  MailApp.sendEmail(to, subject, message, option);
}
</code></pre>



<p>inlineImageObjectはHTMLメール本文に設定する画像の数だけ{imageKey: imageSource}の形式で設定します。</p>



<p>画像が複数ある時は{imageKey1: imageSource1, imageKey2: imageSource2}のようにカンマ(,)で区切ります。<br>javascriptのオブジェクトについて、詳細な情報が知りたい方は<a rel="noreferrer noopener" href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Working_with_Objects" target="_blank">MDN公式リファレンス</a>で詳しく説明されています。</p>



<h3>noReplyオプションで返信不可にする設定</h3>



<p>noReplyオプションでメール受信者がこちらのメールアドレスに返信できないようにします。<br>企業側から送るキャンペーンのメールなどは返信不可であることが多いです。</p>



<p>この設定はGoogle Workspaceのみで通常利用では使用できないようになっています。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var option = {
    noReply: true  // ★true:返信不可/false:返信可
  };
  MailApp.sendEmail(to, subject, message, option);
}</code></pre>



<h3>replyToオプションで返信先を変更する設定</h3>



<p>replyToオプションはメール受信者からの返信先を別のメールアドレスに設定したい時に使います。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction() {
  var to = 'mike@example.com';
  var subject = 'これはテストです。';
  var message = 'これはTestです。';

  var option = {
    replyTo:'bob@example.com'
  };
  MailApp.sendEmail(to, subject, message, option);
}</code></pre>



<h2>まとめ</h2>



<p>Google Apps Scriptを使ってメールを送信する方法と送信時のオプション全9つについて解説してきました。</p>



<p>プライベートで利用するのであればここまでの設定は不要ですが、ビジネス利用するとなると必要になってくる場面があるかもしれませんね。<br>自動化できることは自動化したいですが、「メールの送信方法が限られるので自動化できない」ではちょっと困ります。</p>



<p>Cc、Bccや添付ファイルの設定方法がわかれば、社内用の通知メールに利用できるようになるし、HTML形式のメールが使えるようになると、メルマガも自動配信の仕組みが整えられます。</p>



<p>こちらの記事を参考にして、Scriptから様々なメール送信方法を使って、ぜひ日々の業務に有効活用してみてください。</p>



<p>参考サイト：<a href="https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)" target="_blank" rel="noreferrer noopener">Googleの公式リファレンス</a></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">228</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/04/2440263-150x150.jpg" width="150" height="150" />	</item>
		<item>
		<title>【Google Apps Script (GAS)】GoogleフォームでThankYouメールを自動返信する方法</title>
		<link>https://gastomize.benri-life.com/google-apps-script/220/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 13:43:29 +0000</pubDate>
				<category><![CDATA[GoogleAppsScript]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=220</guid>

					<description><![CDATA[Googleフォームは簡単にアンケートや申し込みフォーム、問い合せフォームを作ることができる上に、無料で使用することができるツールです。 直感的な操作で簡単にフォームを作ることができるのですが、Googleフォームはフォ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Googleフォームは簡単にアンケートや申し込みフォーム、問い合せフォームを作ることができる上に、無料で使用することができるツールです。</p>



<p>直感的な操作で簡単にフォームを作ることができるのですが、Googleフォームはフォームの申込者に対して、ThankYouメールを自動送信する機能は実装されていません。自動送信したい場合は自身で設定する必要があります。<br>フォームに申し込んだ側からすると、<strong>申し込みはちゃんと届いている？</strong>といった不安を与えてしまうので、できるかぎり設定したいところです。</p>



<p>Googleフォームに自動返信機能をつける方法として、大きく2通りあります。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffff;border:3px dashed #f2bf7d;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>Google Apps Scriptを使って自分でプログラムを書く</li><li>アドオンを使う</li></ul>
</div></div>



<p>今回は「Google Apps Scriptを使って自分でプログラムを書く」方法を詳しく解説しつつ、メールの内容を簡単に変更できるようにカスタマイズしていこうと思います。</p>



<p>アドオン(Email Notifications for Google Forms)を使う方法については<a rel="noreferrer noopener" href="https://form.run/media/contents/form-creation-tools/googleform-autoreplymail/" target="_blank">こちらのサイト</a>が導入方法から設定方法など詳しく説明しています。 ただ、レビューをみるとGoogleWorkspaceだとうまく動かないこともあるようですのでご注意ください。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>自動返信機能をつける手順</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>スクリプトエディタを起動してプログラムを書き込む</li><li>フォームが送信された時に動くようにトリガーを設定する</li><li>フォームから入力を送信してテストする</li></ul>
</div></div>



<p>本記事に書かれているプログラムをコピペするだけで、簡単に自動返信設定ができるようにしていますので、ぜひ設定してみてください。</p>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>アドオンは設定画面が英語で書かれているので、読めない筆者はきついです！</p></div></div></div>



<h2>フォームを作成する</h2>



<p>まずはフォームを作成します。<br>「Googleドライブ」の「新規」→「その他」メニューから「Googleフォーム」を選択してフォームを作成します。<br>メニューにない場合は「＋ アプリを追加」からメニューに追加してください。</p>



<p>「設定」から「メールアドレスを収集する」にチェックを入れるとメールアドレスの質問が追加されます。<br>こちらも必ず設定してください。</p>



<p>Googleフォームの作成方法は「<a href="https://googleapps.benri-life.com/google-forms-service/234/" data-type="URL" data-id="https://googleapps.benri-life.com/google-forms-service/234/">Googleフォームの作り方とScriptでの回答の取得方法</a>」で解説しています。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#000000;background-color:#fbbc05;border:1px solid #fbbc05;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 28 28"><path d="M16 21.484v-2.969c0-0.281-0.219-0.516-0.5-0.516h-3c-0.281 0-0.5 0.234-0.5 0.516v2.969c0 0.281 0.219 0.516 0.5 0.516h3c0.281 0 0.5-0.234 0.5-0.516zM15.969 15.641l0.281-7.172c0-0.094-0.047-0.219-0.156-0.297-0.094-0.078-0.234-0.172-0.375-0.172h-3.437c-0.141 0-0.281 0.094-0.375 0.172-0.109 0.078-0.156 0.234-0.156 0.328l0.266 7.141c0 0.203 0.234 0.359 0.531 0.359h2.891c0.281 0 0.516-0.156 0.531-0.359zM15.75 1.047l12 22c0.344 0.609 0.328 1.359-0.031 1.969s-1.016 0.984-1.719 0.984h-24c-0.703 0-1.359-0.375-1.719-0.984s-0.375-1.359-0.031-1.969l12-22c0.344-0.641 1.016-1.047 1.75-1.047s1.406 0.406 1.75 1.047z" fill="#000000"></path></svg></span><span>必ず行なってください</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #fbbc05;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>「設定」から「メールアドレスを収集する」にチェックを入れる</li></ul>
</div></div>



<h2>自動返信プログラムを自分で書き込む</h2>



<p>フォームができたら、自動返信のための設定をしていきます。<br>今回は自動返信するプログラムを自分で作って設定するので、「スクリプトエディタ」を使ってプログラムを書いていくことになります。</p>



<p>ただ、プルグラムは本記事に書いてある内容をコピーして貼り付けるだけでOKです。</p>



<h3>スクリプトエディタを起動してプログラムを書き込む</h3>



<p>まずは、プログラムを記述するために「<i class="fas fa-ellipsis-v">メニュー</i>」-&gt;「スクリプトエディタ」からスクリプトエディタを起動します。</p>



<p>スクリプトエディタが起動したら下記のプログラムをコピーして貼り付けます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function sendThankYouMail(e) {
  // ワーク変数
  var mail = '';
  var name = '';
  
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();
  
  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();

    // 質問が「メールアドレス」の場合
    if (question == 'メールアドレス'){
      mail = answer; 
    }
  }
    
  // メッセージを作成
  var title = 'お問い合わせを受け付けました。';
  var content = 'お問い合わせを受け付けました。\n'
  + 'ご返答までしばらくお待ちください。';
  GmailApp.sendEmail(mail, title, content);
}</code></pre>



<h3>プログラムの解説</h3>



<p>スクリプトエディタを起動すると<em>function myFunction() {}</em>が記述されていると思いますが、今回はわかりやすくするために削除して<em>sendThankYouMail()</em>にしました。<br>Googleフォームの回答情報を取得するためには<em>sendThankYouMail()</em>の引数にeを追加します。</p>



<p>引数に設定したeから<em>getItemResponses()</em>で回答情報を取得することができます。<br>取得した回答情報(<em>itemResponses</em>)は配列形式なので、<em>for</em>文で一つ一つ取り出していき「メールアドレス」の項目の回答を抽出します。</p>



<p>最後に自動返信するメッセージを設定して、取得した「メールアドレス」を宛先に設定してメール送信しています。</p>



<p>メール送信に関する細かい設定は「<a href="https://googleapps.benri-life.com/google-apps-script/228/">【Google Apps Script (GAS)】Scriptからメールを送信する方法と全9オプションの設定方法を解説！</a>」で解説していますので参考にしてください。</p>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>メール本文に記述している「<code>\n</code>」は改行コードというものです。<br>文章などをプログラムで作成していて、改行が必要になった場合は改行コードを入力することで改行できます。</p></div></div></div>



<h2>フォームが送信された時に動くようにトリガーを設定する</h2>



<p>プログラムが書けたら、「トリガー」を設定していきます。</p>



<p>「トリガー」とは、プログラムを実行するきっかけだと思ってください。<br>トリガーを設定することで「毎日実行する」、「フォームの入力内容が送信されたら実行する」などプログラムに合わせて、実行タイミングを設定します。</p>



<p>今回の自動返信であれば、「フォームの入力内容が送信されたら実行する」を設定していくことになります。</p>



<h3>トリガーの設定ダイアログを開く</h3>



<p>トリガーを設定するために「トリガー設定ダイアログ」を立ち上げます。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>トリガーの設定ダイアログの立ち上げ方</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:32% auto"><figure class="wp-block-media-text__media"><img width="714" height="692" src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39.png" alt="" class="wp-image-367 size-full" srcset="https://gastomize.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39.png 714w, https://gastomize.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2021-04-28-14.06.39-300x291.png 300w" sizes="(max-width: 714px) 100vw, 714px" /></figure><div class="wp-block-media-text__content">
<p>スクリプトエディタの左メニューから「トリガー」を選択すると設定されているトリガーを確認できる一覧画面が開きます。<br>一覧画面の右下に「<i class="fas fa-plus">  トリガーを追加</i>」ボタンをクリックすると図のようなダイアログが立ち上がります。</p>
</div></div>
</div></div>



<h3>トリガーを設定する</h3>



<p>「トリガー設定ダイアログ」が立ち上がったら、設定を行なっていきます。<br>いくつか設定項目がありますが、下記の項目を変更して「保存」ボタンをクリックてください。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px double #b5e28a;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<p>実行する関数を選択：myFunction<br>イベントのソースを選択：フォームから<br>イベントの種類を選択：フォームの送信時</p>
</div></div>



<p>これで自動返信機能をつける作業は終わりになります。<br>最後にテストをしてしっかり動くことを確認しましょう。</p>



<h2>フォームから入力を送信してテストする</h2>



<p>「プログラムの書き込み」と「トリガーの設定」が終わったら、<strong><span style="color: #ff0000" class="text-color">プログラムがしっかり動いて、自動返信が届くこと</span></strong>を確認します。<br>実はプログラムがちゃんと動いていなかった・・・、トリガーの設定内容を間違っていたなどがあると意図した通りに動かないので、最後にしっかりと確認するようにしてください。</p>



<h2>返信内容をGoogleドキュメントを使ってテンプレート化する</h2>



<p>ここまでの設定で自動返信の設定は完了しましたが、<br><span style="background-color: #f5f5f5" class="background-color">お問い合わせを受け付けました。<br>ご返答までしばらくお待ちください。</span><br>と返信内容としては寂しいものになっていますので、もう少し気の利いた内容を送信できるようにメール内容をテンプレート化して、プログラム内で読み込んで送信することもできます。</p>



<div class="blogcard"><a href="https://googleapps.benri-life.com/google-apps-script/379/" data-blogcard="1"></a></div>



<div class="wp-block-luxe-blocks-balloon" style="display:flex;margin-top:10px;margin-bottom:30px"><figure style="max-width:12%"><img src="https://googleapps.benri-life.com/wp-content/uploads/2021/04/face.png"/><figcaption class="luxe-bl-cap">たくみん</figcaption></figure><div class="luxe-bl-wrap"><div class="luxe-bl-lbf" style="border-right:15px solid #78e14f"></div><div class="luxe-bl-lmain" style="background:#bcf7a5;border:1px solid #78e14f;border-radius:20px;padding:0px 15px 0px 15px "><div class="luxe-bl-laf" style="border-right:15px solid #bcf7a5;left:-16px"></div><p>メール内容が長文であれば、テンプレート化しておくとメンテナンスが楽です！</p></div></div></div>



<h2>まとめ</h2>



<p>問合せフォームから問合せがあったら、返信しないと届いたかどうかユーザーを不安にさせてしまいます。<br>かといって、ずっとパソコンの前に張り付いているわけではないので、問合せがくるたびにメールを返信することはできません。<br>なので、問合せフォームには自動返信機能をつけることをオススメします。</p>



<p>問合せフォームを簡単に作れるツールにGoogleフォームがありますが、自動返信機能が備わっていないので、自身で追加する必要があります。<br>Googleフォームに自動返信機能をつける方法として、大きく2通りあります。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#ffffff;border:3px dashed #f2bf7d;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>Google Apps Scriptを使って自分でプログラムを書く</li><li>アドオンを使う</li></ul>
</div></div>



<p>この記事では「Google Apps Scriptを使って自分でプログラムを書く」方法をご紹介しました。</p>



<p>コピペで簡単に追加することができるので、ぜひお試しください。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">220</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/04/-2021-04-27-16.39.46-e1619594134881-150x150.png" width="150" height="150" />	</item>
		<item>
		<title>【Google Apps Script (GAS)】Googleフォームの回答状況をメールで送信する</title>
		<link>https://gastomize.benri-life.com/google-forms-service/218/</link>
		
		<dc:creator><![CDATA[たくみん]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 13:43:29 +0000</pubDate>
				<category><![CDATA[GoogleForms]]></category>
		<guid isPermaLink="false">https://googleapps.benri-life.com/?p=218</guid>

					<description><![CDATA[Googleフォームは回答状況をフォーム編集画面の「回答」タブから確認することができます。回答別、質問別など色々な角度からデータを確認することができます。 しかし、Googleフォームはスマホでのアプリを提供しておらず、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Googleフォームは回答状況をフォーム編集画面の「回答」タブから確認することができます。<br>回答別、質問別など色々な角度からデータを確認することができます。</p>



<p>しかし、Googleフォームはスマホでのアプリを提供しておらず、スマホのブラウザでも開くことができないので、集計状況をパッとスマホで確認したくてもできない状態なのです。<br>(スプレッドシートにデータ連携していればそちらからでも確認できますが・・・)</p>



<p>そこで、Googleフォームの回答状況をメールで自分に向けて送信するプログラムを作ってみましたので、作り方を解説していこうと思います。<br>なお、本記事では、「回答状況を収集するしてメールを送信する」プログラムを解説していますが、プログラムを実行するためのGoogleフォームはあくまで例なので、用途に合わせて作り換えてください。</p>



<p>プログラムの仕様は下記のとおりで、<a href="https://googleapps.benri-life.com/google-forms-service/441/">Googleフォームでバッチ実行画面を簡単に作る！</a>で紹介しているように別のGoogleフォームから呼び出すようにすると、スマホから実行できるようになります。<br>メールの送信先をスマホで確認できるメールアドレスにすることで、スマホでも確認できるようになります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>プログラムの仕様</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>回答状況を集計したいGoogleフォームを指定する</li><li>メール形式にまとめて、自分に送る</li></ul>
</div></div>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#000000;background-color:#fbbc05;border:1px solid #fbbc05;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 28 28"><path d="M16 21.484v-2.969c0-0.281-0.219-0.516-0.5-0.516h-3c-0.281 0-0.5 0.234-0.5 0.516v2.969c0 0.281 0.219 0.516 0.5 0.516h3c0.281 0 0.5-0.234 0.5-0.516zM15.969 15.641l0.281-7.172c0-0.094-0.047-0.219-0.156-0.297-0.094-0.078-0.234-0.172-0.375-0.172h-3.437c-0.141 0-0.281 0.094-0.375 0.172-0.109 0.078-0.156 0.234-0.156 0.328l0.266 7.141c0 0.203 0.234 0.359 0.531 0.359h2.891c0.281 0 0.516-0.156 0.531-0.359zM15.75 1.047l12 22c0.344 0.609 0.328 1.359-0.031 1.969s-1.016 0.984-1.719 0.984h-24c-0.703 0-1.359-0.375-1.719-0.984s-0.375-1.359-0.031-1.969l12-22c0.344-0.641 1.016-1.047 1.75-1.047s1.406 0.406 1.75 1.047z" fill="#000000"></path></svg></span><span>注意点</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #fbbc05;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<p>対象のフォームはGoogleフォームであればどんなフォームでも良いのですが、集計するフォームには「お名前」の質問が必須項目となります。</p>
</div></div>



<h2>プログラムを実行するためのフォームを作成する</h2>



<p>募集に使用しているGoogleフォームとは別にGoogleフォームを作ります。<br>Webブラウザで表示できればなんでも良いので、スタンドアロンのGoogle Apps Scriptを作成してWebアプリケーションとして公開しても良いですが、Google Apps Scriptプログラムが簡単に実行でき、Web画面も簡単にできるのでGoogleフォームを使用するのがオススメです。</p>



<h3>集計状況取得画面として使うフォームを作る</h3>



<p>Googleフォームを立ち上げて、「メールアドレス」と「集計するフォーム」を指定する入力欄を作ります。<br>Googleフォームの作成方法については、<a href="https://googleapps.benri-life.com/google-forms-service/234/" data-type="URL" data-id="https://googleapps.benri-life.com/google-forms-service/234/">Googleフォームの作り方とScriptでの回答の取得方法</a>で解説しています。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>実行のためのフォーム</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img src="https://benri-life.com/wp-content/uploads/2020/02/5fbfcf6bc6ca16f6f541df47efae8ba0-1024x768.png" alt="" class="wp-image-1422 size-full"/></figure><div class="wp-block-media-text__content">
<p>入力項目としては「メールアドレス」と「どのイベントを集計するか」で十分かと思います。<br>「メールアドレス」は集計状況の収集結果を送信する宛先アドレスを入力してもらうようにします。<br>「どのイベントを集計するか」はプルダウン式にして選択させるようにすることで誤入力を防止します。</p>
</div></div>
</div></div>



<h3>集計状況取得画面のプログラム</h3>



<p>Googleフォームで作った「集計状況取得画面」にスクリプトを記述していきます。<br>まずは、プログラムを記述するために「<em>メニュー</em>」-&gt;「スクリプトエディタ」からスクリプトエディタを起動します。</p>



<p>後述する「状況収集プログラム」を実行するためのプログラムを記述します。<br>入力フォームで入力した値を受け取り、受け取った値を元に適切なパラメータを「状況収集プログラム」の呼び出しに設定します。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">function myFunction(e) {
  var mail = '';
  var kbn = '';
  //回答のオブジェクトを取得
  var itemResponses = e.response.getItemResponses();
  
  //回答内容を取得
  for (var i = 0; i &lt; itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    
    if (question == 'メールアドレス'){
      mail = answer;
    }
    if (question == 'どのイベントの集計状況を取得しますか？'){
      kbn = answer;
    }
  }

  if ( kbn == '応募フォーム' ) {
    var formId = 'abcdefghijklmnopqrstuvwxyz'; // GoogleフォームのIDを指定する
  }
  
  // 回答状況を集計し、メールで送信する
  aggregateApplicant(formId, mail);
}</code></pre>



<p>「どのイベントの集計状況を取得しますか？」の質問で選択された内容を基にして、募集しているGoogleフォームのIDを「状況収集」プログラムのパラメータに設定しています。</p>



<h2>状況収集プログラム</h2>



<p>「集計状況取得画面」ができたら、「状況収集プログラム」を作成していきます。</p>



<p>画面からの入力である<code>formId</code>を使って送信データと回答データを取得して欲しいデータを集め、同じく画面からの入力である<code>mailAddress</code>の宛先に集計結果を送付します。</p>



<p>スクリプトエディタの「ファイル」からスクリプトファイルを追加して、下記のプログラムをコピー&amp;ペーストで貼り付けます。</p>



<pre class="wp-block-luxe-blocks-syntaxhighlighter line-numbers language-javascript"><code class="language-javascript">/**
 * 任意のフォームの応募者の一覧と総人数をメールで送信する
 * @param formId 集計対象の応募フォームID
 * @param mailAddress 送信先メールアドレス
 * @return なし
 */
function aggregateApplicant(formId, mailAddress) {
  var message = '';
  var applicantList = '';
  
  // フォームIDからフォームを開く
  var form = FormApp.openById(formId);
  for (var i=0; i&lt;form.getResponses().length; i++) {
    var response = form.getResponses()[i];
    for (var j=0; j&lt;response.getItemResponses().length; j++) {
      var itemResponse = response.getItemResponses()[j];
      var question = itemResponse.getItem().getTitle();
      var answer = itemResponse.getResponse();
      var applicant = '';
      if (question == 'お名前'){
        applicant = answer;
      }

      if (applicant != '') {
        if (applicantList != '') {
          applicantList = applicantList + '\n';
        }
        applicantList = applicantList + applicant;
      }
    }
  }
  
  // メール本文を作成する
  message += '応募者の一覧です。\n\n';
  message += '応募者人数：' + form.getResponses().length + '人\n\n';
  message += '応募者一覧\n';
  message += '*-----------------------*\n';
  message += applicantList + '\n';
  message += '*-----------------------*\n';
  
  // メールを送信する
  GmailApp.sendEmail(mailAddress, '集計結果', message);
}</code></pre>



<h2>プログラムの解説</h2>



<p>本プログラムは<code>getResponses()</code>と<code>getItemResponses()</code>のメソッドがポイントになります。<br><code>getResponses()</code>はフォームに記録されている送信データを全て取得します。送信データが取得できたら、<code>getItemResponses()</code>を使って、回答データ(質問と回答のペア)を取得します。</p>



<p>質問データが取得できたら、質問と回答内容にしたがって、処理を進めていくプログラムになっています。</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>メソッド名</th><th>説明</th></tr></thead><tbody><tr><td>getResponses()</td><td>フォームの全ての送信データを配列で取得する。</td></tr><tr><td>getItemResponses()</td><td>フォーム送信データに含まれるすべての質問データを取得します。<br>(取得した質問データの順序はフォームに表示される順序)</td></tr></tbody></table><figcaption>ポイントとなるメソッドの説明</figcaption></figure>



<h3>送信データ、回答データを取得する</h3>



<p>全ての送信データ、全ての回答データについてfor文を使って一つ一つ確認していき、「回答した人の一覧」を作っていきます。</p>



<pre class="wp-block-preformatted">// フォームIDからフォームを開く
var form = FormApp.openById(formId);
for (var i=0; i&lt;form.getResponses().length; i++) {
  var response = form.getResponses()[i];
  for (var j=0; j&lt;response.getItemResponses().length; j++) {
    var itemResponse = response.getItemResponses()[j];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    :
    :
  }
}</pre>



<p>回答データ一つ一つについて<code>if (question == 'お名前')</code>といったようにif文を使って、「もし質問が&#8221;お名前&#8221;だったら、○○しなさい」と記述します。<br>このプログラムの場合は、質問が「お名前」だったら、<code>applicant</code>の変数に回答を保持します。<br>同様にプログラム中にはif文で記述されている箇所が3つあります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#34a853;border:1px solid #34a853;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M20.062 11.469c0-0.266-0.094-0.531-0.281-0.719l-1.422-1.406c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-6.375 6.359-3.531-3.531c-0.187-0.187-0.438-0.297-0.703-0.297s-0.516 0.109-0.703 0.297l-1.422 1.406c-0.187 0.187-0.281 0.453-0.281 0.719s0.094 0.516 0.281 0.703l5.656 5.656c0.187 0.187 0.453 0.297 0.703 0.297 0.266 0 0.531-0.109 0.719-0.297l8.484-8.484c0.187-0.187 0.281-0.438 0.281-0.703zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>質問と回答内容に応じた処理</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #34a853;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>「メールアドレス」 =&gt; 集計結果のメール送付先</li><li>「どのイベントの集計状況を取得しますか？」 =&gt; 集計するフォームを特定する</li><li>「お名前」 =&gt; 応募者を一覧化してメールに載せる</li></ul>
</div></div>



<h3>メールを送信する</h3>



<p>最後にメール本文を作成して、メールを送信します。<br>Gmailを使ったメールの送信方法やメール本文をテンプレート化する方法については、下記の記事で解説していますので参考にしてみてください。</p>



<p>集計するデータや、メールの送信内容はサンプルですので、欲しい情報にカスタマイズしてもよいと思います。<br>報告などに使用する際は、送信する内容をツールで生成してしまうと時間短縮になります。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#808080;border:1px solid #808080;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z" fill="#fff"></path></svg></span><span>参考</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #808080;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>Gmailを使ったメールの送信方法 =&gt; <a href="https://googleapps.benri-life.com/google-apps-script/228/" data-type="URL" data-id="https://googleapps.benri-life.com/google-apps-script/228/">Scriptからメールを送信する方法と全9オプションの設定方法を解説！</a></li><li>メール本文をテンプレート化する方法 =&gt; <a href="https://googleapps.benri-life.com/google-apps-script/379/" data-type="URL" data-id="https://googleapps.benri-life.com/google-apps-script/379/">メール本文をテンプレートから読み込んで送付する</a></li></ul>
</div></div>



<h2>まとめ</h2>



<p>Googleフォームの回答状況を集計して、メールで送付するプログラムを解説しました。<br>プログラムの仕様は大まかに次の2点です。</p>



<div class="wp-block-luxe-blocks-topic" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-topic-title" style="color:#fff;background-color:#4285f4;border:1px solid #4285f4;border-radius:5px 5px 0 0;padding:3px 15px;display:inline-block"><span class="wp-block-luxe-blocks-topic-icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 2 24 28"><path d="M5.672 24l1.422-1.422-3.672-3.672-1.422 1.422v1.672h2v2h1.672zM13.844 9.5c0-0.203-0.141-0.344-0.344-0.344-0.094 0-0.187 0.031-0.266 0.109l-8.469 8.469c-0.078 0.078-0.109 0.172-0.109 0.266 0 0.203 0.141 0.344 0.344 0.344 0.094 0 0.187-0.031 0.266-0.109l8.469-8.469c0.078-0.078 0.109-0.172 0.109-0.266zM13 6.5l6.5 6.5-13 13h-6.5v-6.5zM23.672 8c0 0.531-0.219 1.047-0.578 1.406l-2.594 2.594-6.5-6.5 2.594-2.578c0.359-0.375 0.875-0.594 1.406-0.594s1.047 0.219 1.422 0.594l3.672 3.656c0.359 0.375 0.578 0.891 0.578 1.422z" fill="#fff"></path></svg></span><span>プログラムの仕様</span></div><div class="wp-block-luxe-blocks-topic-content" style="background-color:#f5f5f5;border:2px solid #4285f4;border-radius:0 5px 5px 5px;padding:0px 15px 0px 15px "><p></p>
<ul><li>回答状況を集計したいGoogleフォームを指定する</li><li>メール形式にまとめて、自分に送る</li></ul>
</div></div>



<p>このプログラムは<code>getResponses()</code>と<code>getItemResponses()</code>のメソッドが2つのフォームで実行されるので、混乱するかもしれません。<br>肝は「<strong>どのフォームに対して実行しているのか</strong>」を捉えられるかどうかだと思います。</p>



<p>このツールを作っておくと、下記のようなメリットがありますので、是非作ってみてください。</p>



<div class="wp-block-luxe-blocks-border-block" style="margin-top:10px;margin-bottom:30px"><div class="wp-block-luxe-blocks-border-block-content" style="background-color:#f5f5f5;border:3px double #b5e28a;border-radius:5px;padding:0px 15px 0px 15px"><p></p>
<ul><li>スマホで投稿フォームの回答状況を確認できる</li><li>メール文章を工夫すれば、報告用に使用できる</li></ul>
</div></div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">218</post-id><media:thumbnail url="https://gastomize.benri-life.com/wp-content/uploads/2021/04/スクリーンショット-2020-02-17-22.43.26-150x150.png" width="150" height="150" />	</item>
	</channel>
</rss>
