<?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/"
	>

<channel>
	<title>Google Apps Script | nujonoa_blog</title>
	<atom:link href="https://nujonoa.com/tag/google-apps-script/feed/" rel="self" type="application/rss+xml" />
	<link>https://nujonoa.com</link>
	<description>人生に役立つデータ集</description>
	<lastBuildDate>Wed, 26 Jan 2022 07:36:51 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://nujonoa.com/wp-content/uploads/2019/04/cropped-DSC00976-e1554456145409-32x32.jpg</url>
	<title>Google Apps Script | nujonoa_blog</title>
	<link>https://nujonoa.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのVBA＝Google Apps Scriptの使い方入門！</title>
		<link>https://nujonoa.com/introduction-to-gas-and-sample-code/</link>
					<comments>https://nujonoa.com/introduction-to-gas-and-sample-code/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Mon, 03 Feb 2020 11:00:00 +0000</pubDate>
				<category><![CDATA[gmail]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[google spreadsheet]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[vba]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[Google Apps Script]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=4067</guid>

					<description><![CDATA[エクセルでマクロを組んで業務改善を行っている人は多いかと思いますが、・共有がしづらい、・変更履歴が追えないなどなどの不満点も多々あるかと思います。 そこで、今回は、スプレッドシートを使うことでできること、サンプルコード一 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p> エクセルでマクロを組んで業務改善を行っている人は多いかと思いますが、<br>・共有がしづらい、<br>・変更履歴が追えない<br>などなどの不満点も多々あるかと思います。 </p>



<p>そこで、今回は、スプレッドシートを使うことでできること、<br>サンプルコード一覧を紹介していきたいと思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのマクロ＝Google Apps Scriptの使い方入門！</a></li><li><a href="#toc2" tabindex="0">使い方</a></li><li><a href="#toc3" tabindex="0">GAS(Google Apps Script)で、できること</a></li><li><a href="#toc4" tabindex="0">サンプルコード一覧！</a><ol><li><a href="#toc5" tabindex="0">セル関係</a><ol><li><a href="#toc6" tabindex="0">セルに値を入力する。</a></li><li><a href="#toc7" tabindex="0">セルの値を取得する。</a></li><li><a href="#toc8" tabindex="0">セル内で計算させる</a></li><li><a href="#toc9" tabindex="0">セルに数式を入れる。</a></li><li><a href="#toc10" tabindex="0">最終行、最終列の取得</a></li><li><a href="#toc11" tabindex="0">セルのコピーペースト</a></li><li><a href="#toc12" tabindex="0">セルのメモ機能</a></li><li><a href="#toc13" tabindex="0">セルの並び替え</a></li><li><a href="#toc14" tabindex="0">入力規則の設定</a></li></ol></li><li><a href="#toc15" tabindex="0">行列の操作</a><ol><li><a href="#toc16" tabindex="0">行列の挿入・削除</a></li><li><a href="#toc17" tabindex="0">行列の幅調整</a></li></ol></li><li><a href="#toc18" tabindex="0">FOR文・IF文</a><ol><li><a href="#toc19" tabindex="0">FOR文(繰り返し)</a></li><li><a href="#toc20" tabindex="0">IF文(条件)</a></li></ol></li><li><a href="#toc21" tabindex="0">ブック、シートの取り扱い</a><ol><li><a href="#toc22" tabindex="0">シート間の移動</a></li><li><a href="#toc23" tabindex="0">他のブックの参照</a></li><li><a href="#toc24" tabindex="0">新規シートの作成</a></li></ol></li><li><a href="#toc25" tabindex="0">見やすさなどなど</a><ol><li><a href="#toc26" tabindex="0">フォントの設定</a></li><li><a href="#toc27" tabindex="0">背景色の設定</a></li><li><a href="#toc28" tabindex="0">罫線を追加する</a></li><li><a href="#toc29" tabindex="0">表示スクロールの固定</a></li><li><a href="#toc30" tabindex="0">進捗状況の表示(ステータスバーの代わり)</a></li><li><a href="#toc31" tabindex="0">スプレッドシートにマクロ登録</a></li></ol></li><li><a href="#toc32" tabindex="0">グーグル独自の機能</a><ol><li><a href="#toc33" tabindex="0">メールの送信</a></li></ol></li></ol></li><li><a href="#toc34" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのマクロ＝Google Apps Scriptの使い方入門！</span></h2>



<p>エクセルも共有などなどができるようになっていますが、<br>やはり、個々の作業が向いているのが現状です。</p>



<p>それに対して、グーグルのスプレッドシートは、<br>動作が遅いなどなどありますが、<br>・リアルタイムに変更が反映される。<br>・グーグルカレンダー、グーグルメールとの連動が簡単<br>というメリットがありますので、進捗管理などに非常に向いています。</p>



<p>そこで、今回は、<br>グーグルのスプレッドシートでのVBA＝GAS(Google Apps Script)について<br>・使い方<br>・できることと<br>・サンプルコード<br>をまとめていこうと思います。</p>



<h2 class="wp-block-heading"><span id="toc2">使い方</span></h2>



<p>GAS(Google Apps Script)はインストールなどは不要となっており、</p>



<p>スプレッドシートを立ち上げて、<br>①ツールを選択<br>②スクリプトエディタを選択</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="432" height="268" src="https://nujonoa.com/wp-content/uploads/2020/02/image-73.png" alt="" class="wp-image-4177" srcset="https://nujonoa.com/wp-content/uploads/2020/02/image-73.png 432w, https://nujonoa.com/wp-content/uploads/2020/02/image-73-300x186.png 300w" sizes="(max-width: 432px) 100vw, 432px" /></figure>



<p>すると、下のような画面が、新たなウインドで表示されますので、<br>この中にマクロと同様、コードを打っていけばいいことになります。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="285" height="129" src="https://nujonoa.com/wp-content/uploads/2020/02/image-74.png" alt="" class="wp-image-4178"/></figure>



<p>コードが完成したら、保存をし、実行するコードを保存。<br>&#x25b6;ボタンで実行します。</p>



<figure class="wp-block-image size-medium"><img decoding="async" width="500" height="318" src="https://nujonoa.com/wp-content/uploads/2020/02/image-77-500x318.png" alt="" class="wp-image-4181" srcset="https://nujonoa.com/wp-content/uploads/2020/02/image-77-500x318.png 500w, https://nujonoa.com/wp-content/uploads/2020/02/image-77-300x191.png 300w, https://nujonoa.com/wp-content/uploads/2020/02/image-77.png 740w" sizes="(max-width: 500px) 100vw, 500px" /></figure>



<p>エクセルのVBAとコードが違うことを除き、ほぼ同じ動作を行えばいいことがわかります。</p>



<h2 class="wp-block-heading"><span id="toc3">GAS(Google Apps Script)で、できること</span></h2>



<p>GAS(Google Apps Script)でできることは、<br>セルの値の入力、計算、罫線の作成、などなど、<br>基本的にエクセルのVBAと同様と考えていただいて構いません(※)。</p>



<p>それに加えて、Googleのサービスとの連携ができます。</p>



<p>例えば、</p>



<p>・gmailの送信を用いて期限が過ぎた予定をフォローする機能<br>・googleカレンダーにスプレッドシートの予定を自動で登録<br>・google翻訳を用いて、スプレッドシート上で日本語→英語に翻訳<br>・トリガーを用いて、毎日自動でプログラムを実行させる。</p>



<p>などなど、Googleを主に使っている人・会社にとって、<br>業務効率化につながることになると思います。</p>



<p>特に5Gの時代が来ると、クラウド上の共有フォルダを用いることが<br>当たり前になってくると思いますし、<br>コードも簡単かつ、選択肢から希望の操作を選択することで<br>簡単に作成することができますので、覚えておいて損はないと思います。</p>



<p> ※現状では、ブラウザ上で通信しながら行いますので、<br>複雑な処理など時間がかかるものに関しては、向いていないのが現状です。</p>



<p>それでは、簡単にサンプルコードの紹介をしていこうと思います。 </p>



<h2 class="wp-block-heading"><span id="toc4">サンプルコード一覧！</span></h2>



<p>とりあえずサンプルコード一覧を作ってみました。<br>ctrl+Fで検索して使ってみてください！ </p>



<p>基本的な動作は網羅していると思います。</p>



<h3 class="wp-block-heading"><span id="toc5">セル関係</span></h3>



<p>まずは簡単に、セルの値の操作など、<br>基本的な操作のサンプルコードです。</p>



<h4 class="wp-block-heading"><span id="toc6">セルに値を入力する。</span></h4>



<p>セルの選択は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
SpreadsheetApp.getActiveSheet().getRange(&quot;行&quot;,&quot;列&quot;)
</pre></div>


<p>セルの値の入力は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
.setValue(&quot;○○○&quot;) 
</pre></div>


<p>で行います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
function code1(){
  
  /*セルに文字を入れる*/

  /*getActiveSheet→シートを選択*/
  /*getRange→セル（Rangeオブジェクト）を選択 */
  /*setValue→セルに値。 */
  SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue(&quot;Hallo world&quot;);
  SpreadsheetApp.getActiveSheet().getRange(2, 1).setValue(&quot;=A$1&quot;);

  /*長いのはめんどくさいので、変数にする*/
  /*VBAでいうDIMがVar*/
    
  var sheet = SpreadsheetApp.getActiveSheet()
  sheet.getRange(3, 1).setValue(&quot;HAPPY&quot;)
 
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc7">セルの値を取得する。</span></h4>



<p>セルの値の取得は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
.getValue()
</pre></div>


<p>で行います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code2_1(){
  
  /*単純な四則演算*/
  
   var sheet = SpreadsheetApp.getActiveSheet()

  /*変数に入力*/
  var TANKA,KOSU
  sheet.getRange(2, 2).setValue(1)  
  TANKA=sheet.getRange(2, 2).getValue()
  
  Browser.msgBox(TANKA)
  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc8">セル内で計算させる</span></h4>



<p>セル内の計算は、上記二つのコードを用いて行うことができます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code2_2(){
  
  /*単純な四則演算*/
  
   var sheet = SpreadsheetApp.getActiveSheet()

  sheet.getRange(1, 2).setValue(1)  
  sheet.getRange(1, 3).setValue(2)
  sheet.getRange(1, 4).setValue(sheet.getRange(1, 2).getValue()*sheet.getRange(1, 3).getValue())
  
  /*変数に入力*/
  var TANKA,KOSU
  sheet.getRange(2, 2).setValue(1)  
  sheet.getRange(2, 3).setValue(2)
  TANKA=sheet.getRange(2, 2).getValue()
  KOSU=sheet.getRange(2, 3).getValue()
  
  sheet.getRange(2, 4).setValue(TANKA * KOSU)
  
}

</pre></div>


<h4 class="wp-block-heading"><span id="toc9">セルに数式を入れる。</span></h4>



<p>セル内に数式を入れる場合は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
.setFormula(&quot;=A&quot; + 3 + &quot;*B&quot; + 3)
</pre></div>


<p>でおこなうことができ、文字と変数を組み合わせたい場合、<br>エクセルVBAでは　"文字" &amp; 変数 　と間に「&amp;」を用いましたが、<br>GASでは　”文字” + 変数　と間に「＋」を用います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code3(){
  
    var sheet = SpreadsheetApp.getActiveSheet()
    
    sheet.getRange(2, 1).setValue(1)
    sheet.getRange(2, 2).setValue(5)
    sheet.getRange(3, 1).setValue(3)
    sheet.getRange(3, 2).setValue(5)

    sheet.getRange(2,4).setValue(&quot;=A2*B2&quot;)
    /*　「&amp;」の代わりは「＋」　*/
    sheet.getRange(3,4).setFormula(&quot;=A&quot; + 3 + &quot;*B&quot; + 3)
  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc10">最終行、最終列の取得</span></h4>



<p>計算でよく使用する、最終行、最終列の取得は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.getLastRow() //最終行
.getLastColumn() //最終列
</pre></div>


<p>で行います。<br>また、スプレッドシートの場合、新規で立ち上げた場合、<br>使える最終行が1000行、最終列がA~Z(26列)となっており、<br>その数を検索する場合、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.getMaxRows()
.getMaxColumns()
</pre></div>


<p>を用います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code4(){
  
  /*最終行*/
  
  var sheet=SpreadsheetApp.getActiveSheet()
  
  　//セルに存在する最後の行
    lastY = sheet.getLastRow()
    lastX = sheet.getLastColumn()
   
 　var lastY = sheet.getRange(sheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
    var lastX = sheet.getRange(1, sheet.getMaxColumns()).getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn();


 
    //ｼｰﾄに存在する最後の行(エクセルのように最初から1048576行は無い)
    lastY2 = sheet.getMaxRows()
    lastX2 = sheet.getMaxColumns()
   
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc11">セルのコピーペースト</span></h4>



<p>セルのコピーペーストは、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
copyTo(&quot;シートの場所&quot;,&quot;条件&quot;)
</pre></div>


<p>を用います。ペーストする際に、エクセル同様、<br>値の貼り付け、書式の貼り付け等を選択することも可能です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code11(){

  //セルのコピー　ペースト
  var book=SpreadsheetApp.getActiveSpreadsheet()
  var sheet=book.getActiveSheet()
  sheet.getRange(2, 1).setValue(200)
  sheet.getRange(3, 1).setValue(&quot;=A2*1+5&quot;)
  
  sheet.getRange(3, 1).copyTo(sheet.getRange(3,10,10,10),SpreadsheetApp.CopyPasteType.PASTE_FORMULA)

  /*
PASTE_NORMAL Enum 値、数式、書式、および結合を貼り付けます。 
PASTE_NO_BORDERS Enum 値、数式、書式、および結合を貼り付けますが、枠線は付けません。 
PASTE_FORMAT Enum フォーマットとデータ検証のみを貼り付けます。 
PASTE_FORMULA Enum 数式のみを貼り付けます。 
PASTE_DATA_VALIDATION Enum データ検証のみを貼り付けます。 
PASTE_VALUES Enum フォーマット、数式、または結合せずに値のみを貼り付けます。 
PASTE_CONDITIONAL_FORMATTING Enum カラールールのみを貼り付けます。 
PASTE_COLUMN_WIDTHS Enum 列幅だけを貼り付けます。 
 */

  sheet.getRange(3, 10,10,10).activate()
  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc12">セルのメモ機能</span></h4>



<p>セルにメモを追加する場合は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.setNote('ここに入力してください。\n');
</pre></div>


<p>を使用します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code12(){
 
  /*メモ機能*/
  var spreadsheet = SpreadsheetApp.getActive();
  
    spreadsheet.getRange('E20').setNote('ここに入力してください。\n');
   
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc13">セルの並び替え</span></h4>



<p>並び替えは、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.sort({column:5,ascending:false})
</pre></div>


<p>を使い、並び替えの条件(キー列、昇順か降順か)を入力してソートします。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code13(){
  
  /*並び替え*/
  
  var sheet = SpreadsheetApp.getActiveSheet();
  
  for(var i=1;i&lt;=10;i++){
   sheet.getRange(5+i, 5).setValue(i) 
  }
  
  var lastY = sheet.getLastRow()
  var lastX = sheet.getLastColumn()
  sheet.getRange(6, 5, lastY-6).activate

  
  sheet.getRange(6, 5, lastY-6+1).sort({column:5,ascending:false})
//  sheet.getRange(6, 5, lastY, lastX)).sort(&#x5B;{column: 1, ascending: true},{column: 2, ascending: false}])


}
</pre></div>


<h4 class="wp-block-heading"><span id="toc14">入力規則の設定</span></h4>



<p>入力規則の設定は、 ルールを設定し、 </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
  var rule1=SpreadsheetApp.newDataValidation().setAllowInvalid(true)
  .requireValueInRange(spreadsheet.getRange('シート1!$J$3:$J$12'), true)
  .build();
</pre></div>

<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
 .setDataValidation(rule1)
</pre></div>


<p>を用いて設定します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code14(){
  
  
  //入力規則　G8に、AONOA!$J$3:$J$12の入力規則を設定
  var spreadsheet = SpreadsheetApp.getActive();
   spreadsheet.getRange('G8').setDataValidation(SpreadsheetApp.newDataValidation()
  .setAllowInvalid(true)
  .requireValueInRange(spreadsheet.getRange('シート1!$J$3:$J$12'), true)
  .build());

  
  //ルールを設定して、そのあとに、setでも設定可能。
  var rule1=SpreadsheetApp.newDataValidation().setAllowInvalid(true)
  .requireValueInRange(spreadsheet.getRange('シート1!$J$3:$J$12'), true)
  .build();

  spreadsheet.getRange('I8').setDataValidation(rule1)
  spreadsheet.getRange('G8').clearDataValidations()
 
}
</pre></div>


<h3 class="wp-block-heading"><span id="toc15">行列の操作</span></h3>



<p>行列の操作方法です。</p>



<h4 class="wp-block-heading"><span id="toc16">行列の挿入・削除</span></h4>



<p>行列の挿入・削除は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.insertColumnsAfter(afterPosition, howMany)
.deleteColumns(columnPosition, howMany)
</pre></div>


<p>で行うことができます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_spread19(){
  
  //行列
  var sheet=SpreadsheetApp.getActiveSheet()
  
  var afterPosition=5
  var howMany=2
  sheet.insertColumnsAfter(afterPosition, howMany)
  sheet.insertRowsAfter(afterPosition, howMany)
  var columnPosition=5  
  var rowPosition=5
  var howMany=2
  sheet.deleteColumns(columnPosition, howMany)//afterいらいない
  sheet.deleteRows(rowPosition, howMany)//afterいらない;

  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc17">行列の幅調整</span></h4>



<p>行列の幅の調整は</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
.setRowHeights(startRow, numRows, height)
</pre></div>


<p>で行います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_spread19(){
  
  //行列
  var sheet=SpreadsheetApp.getActiveSheet()
  sheet.getRange(2, 1).setValue(200) 

  //行列幅自動調整
  sheet.autoResizeColumns(2, 3);
  sheet.autoResizeRows(2, 3);  
  
  //sheet.setRowHeights(startRow, numRows, height)

}
</pre></div>


<h3 class="wp-block-heading"><span id="toc18">FOR文・IF文</span></h3>



<p>for文、if文になります。<br>JAVAスクリプトベースの書き方になります。</p>



<h4 class="wp-block-heading"><span id="toc19">FOR文(繰り返し)</span></h4>



<p>繰り返し作業は、</p>



<p>10以下、+1ずつカウントアップの場合、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
 for(var i=1;i&lt;=10;i++){     
  /*繰り返し部*/
}
</pre></div>


<p>となります。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code6(){
 
  var  sheet=SpreadsheetApp.getActiveSheet()
  
  for(var i=1;i&lt;=10;i++){     
  sheet.getRange(1+i, 6).setValue(i*2)
}

  sheet.getRange(7, 6).clear()

}
</pre></div>


<h4 class="wp-block-heading"><span id="toc20">IF文(条件)</span></h4>



<p>IF文は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
 if(sheet.getRange(11, 1).getValue()&gt;2){
   /*コード*/
  }  
</pre></div>


<p>のコードで実装できます。<br>≠は!=で表すなどは、下記サンプルコードコメント部を参照ください。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code5(){
  
  //if文
  
  var sheet=SpreadsheetApp.getActiveSheet()
  
  sheet.getRange(10, 1).setValue(1)  
  sheet.getRange(11, 1).setValue(2)
  
  if(sheet.getRange(10, 1).getValue()==1){
    
    sheet.getRange(10, 2).setValue(&quot;〇&quot;)
  }  
  else{  
      sheet.getRange(10,2).setValue(&quot;×&quot;)
  }
  if(sheet.getRange(11, 1).getValue()&gt;2){
    
    sheet.getRange(11, 2).setValue(&quot;〇&quot;)
  }  
  else{  
      sheet.getRange(11,2).setValue(&quot;×&quot;)
  }  
  
  /*
==	等しい	被演算子が等しい場合に true を返します。
!=	等しくない	被演算子が等しくない場合に true を返します。
===	厳密に等しい	被演算子が等しく、かつ同じ型である場合に true を返します。
!==	厳密に等しくない	被演算子が等しくなく、かつ/または同じ型でない場合に true を返します。
&gt;	より大きい	左の被演算子が右の被演算子よりも大きい場合に true を返します。
&gt;=	以上	左の被演算子が右の被演算子以上である場合に true を返します。
&lt;	より小さい	左の被演算子が右の被演算子よりも小さい場合に true を返します。
&lt;=	以下	左の被演算子が右の被演算子以下である場合に true を返します。
 */  
  
  /*
&amp;&amp;	expr1 &amp;&amp; expr2	論理積 (AND)
||	expr1 || expr2	論理和 (OR)
!	!expr	論理否定 (NOT)
 */  
}
</pre></div>


<h3 class="wp-block-heading"><span id="toc21">ブック、シートの取り扱い</span></h3>



<p>ブック、シートの取り扱いは少しだけとっつきにくいかもしれません。</p>



<h4 class="wp-block-heading"><span id="toc22">シート間の移動</span></h4>



<p>エクセルと同様、シートの移動などにも対応します。<br>少々とっつきにくいのは、まず何かの変数に情報を先に入れておくことでしょうか？</p>



<p>シート名で指定する方法、シートの数で指定する方法などなどがあるようです。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code8(){
  
  /*シート間の移動*/
  
  var book=SpreadsheetApp.getActiveSpreadsheet()
  var sheet2=book.getSheetByName(&quot;シート5&quot;).activate()
  
  Browser.msgBox(book.getActiveSheet().getSheetName(), Browser.Buttons.OK)
  
  /*数でとる*/
  
  var sheet3=book.getSheets()&#x5B;2].activate()
  Browser.msgBox(book.getActiveSheet().getSheetName(), Browser.Buttons.OK)
 
  /*sheetをすべて検索して表示*/
  
  var sheets=book.getSheets()
  for (i = 0; i &lt; book.getSheets().length; i++) {
    sheets&#x5B;i].getRange(1, 1).setValue(sheets&#x5B;i].getName())
    Browser.msgBox(sheets&#x5B;i].getName(), Browser.Buttons.OK)
  } 
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc23">他のブックの参照</span></h4>



<p>他のブックの参照は、<br>ブックごとに定められた「ID」を用いて行います。<br>名前の指定もできますが、ドライブの指定などなどありますので、<br>IDの指定が一番だと思います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code9(){
 
  //他のブックの参照
  
  /*importrangeで他のものを参照できる*/
  var book1 =SpreadsheetApp.getActiveSpreadsheet()
  var book2=SpreadsheetApp.openById(&quot;IDをいれる&quot;)//IDを入れる
  var book2=SpreadsheetApp.openByName(&quot;名前&quot;)//IDを入れる
  
  //これでどちらも開いて、book1などでACTIVATEできる
  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc24">新規シートの作成</span></h4>



<p>参考までに、シートを作成するときに、<br>重複エラーが出ないようコードを作成してみました。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code10(){
  
  /*重複しないようにシートを作成*/
 
  var newsheetname=&quot;新規ｼｰﾄ&quot;
  
  var book =SpreadsheetApp.getActiveSpreadsheet()
  var sheet =SpreadsheetApp.getActiveSheet()
  var flag=0

  
  var sheets=book.getSheets()
  for (i = 0; i &lt; book.getSheets().length; i++) {
    if(sheets&#x5B;i].getName()==newsheetname){
      flag=1
      
    }
  }
    
    if(flag==0){
      book.insertSheet(newsheetname)
    }else{
    var HANTEI=Browser.msgBox(newsheetname + &quot;が存在します。置き換えますか&quot;, Browser.Buttons.YES_NO)
    if(HANTEI == &quot;yes&quot;){
      book.deleteSheet(book.getSheetByName(newsheetname))
      book.insertSheet(newsheetname)
    }
  }
</pre></div>


<h3 class="wp-block-heading"><span id="toc25">見やすさなどなど</span></h3>



<p>セルの色の変更や背景色の変更などなどです。<br>罫線などの設定も簡単にできます。</p>



<h4 class="wp-block-heading"><span id="toc26">フォントの設定</span></h4>



<p>フォントの設定は、下記の通り、setFont○○を用いて行います。<br>太文字、色の変更、などなどをおこなうことができます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_spread18(){
  
  var sheet=SpreadsheetApp.getActiveSheet()
  //
  sheet.getRange(1,1,10,10).setValue(1)
  sheet.getRange(1,1,1,10).setFontWeight(&quot;bold&quot;)//
  sheet.getRange(1,1,1,10).setFontColor(&quot;red&quot;)//red（赤）になります。blue（青）、green（緑）、yellow（黄）,setFontColor(“#F99273”) 


}
</pre></div>


<h4 class="wp-block-heading"><span id="toc27">背景色の設定</span></h4>



<p>背景色の設定は、.setBackground("")です。<br>RGBでも指定できますし、HTMLカラーコードでも設定可能です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_spread18(){
  
  var sheet=SpreadsheetApp.getActiveSheet()
  //
  sheet.getRange(1,1,10,10).setValue(1)
  sheet.getRange(1,1,1,10).setBackground(&quot;blue&quot;)//red（赤）になります。blue（青）、green（緑）、yellow（黄）,setFontColor(“#F99273”) 
  //setBackgroundRGB(0, 0, 255);も可

}
</pre></div>


<h4 class="wp-block-heading"><span id="toc28">罫線を追加する</span></h4>



<p>罫線の追加は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  sheet.getRange(2, 6,lastY,7).setBorder(true, null, null, true, null, null)
//  sheet.getRange(row, column).setBorder(top, left, bottom, right, vertical, horizontal, color, style)
</pre></div>


<p>で、行います。一気に設定できるので楽ですね。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code7(){
 
  var  sheet=SpreadsheetApp.getActiveSheet()
  
  for(var i=1;i&lt;=10;i++){     
  sheet.getRange(1+i, 6).setValue(i*2)
  sheet.getRange(1+i, 7).setValue(i*3)
}

  var lastY=sheet.getLastRow()

  sheet.getRange(2, 6,lastY,7).setBorder(true, null, null, true, null, null)
//  sheet.getRange(row, column).setBorder(top, left, bottom, right, vertical, horizontal, color, style)
  
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc29">表示スクロールの固定</span></h4>



<p>スクロールの固定は、</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
 .setFrozenRows(2)
 .setFrozenColumns(3)
</pre></div>


<p>です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code15(){
  
  //表示のスクロールの固定
  
  var sheet=SpreadsheetApp.getActiveSheet()
  
  sheet.setFrozenRows(2)
  sheet.setFrozenColumns(3)
 
}
</pre></div>


<h4 class="wp-block-heading"><span id="toc30">進捗状況の表示(ステータスバーの代わり)</span></h4>



<p>進捗状況の表示は、エクセルではステータスバーが使えましたが、<br>グーグルスプレッドシートでは、トーストを使うようです。<br>ステータスバーほど、リアルタイムに反映できませんが、<br>どの処理を行っているかの確認はできると思います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code17(){
  
  //進捗状況を確認
  //トースト

  //getActiveなことに注意
  var sheet=SpreadsheetApp.getActive()

  var msg=&quot;メッセージを入力&quot;
  var title=&quot;タイトルを入力&quot;
  var timeoutSeconds=5//秒数を入力、-1は×ボタンが押されるまで。
  
  sheet.toast(msg, title, timeoutSeconds)
  
  for(var i=1;i&lt;=100000;i++){
   
    if(i%10000==0){sheet.toast(i,i+&quot;/10000&quot;,1)}
      
  }
      
  sheet.toast(&quot;&quot;,&quot;終了&quot;,1)

}
</pre></div>


<h4 class="wp-block-heading"><span id="toc31">スプレッドシートにマクロ登録</span></h4>



<p>ショートカットにマクロの登録をすることができます。</p>



<p>いちいちスクリプトを立ち上げなくてもよくなりますので、便利になると思います。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_spread20() {
  
  //onOpenでつかうと有用
  //function onOpen() {
  //スプレッドシートにスクリプト登録
  var book=SpreadsheetApp.getActiveSpreadsheet()
  var sheet=SpreadsheetApp.getActiveSheet()
  
  SpreadsheetApp.getUi()
  .createMenu('登録')//ボタン名
  .addItem('自動化1', 'code_spread19')//表示名と、プログラム
  .addToUi();
  
  //removeMenuで消せる。
  
  book.removeMenu(&quot;登録&quot;)
  
}
</pre></div>


<h3 class="wp-block-heading"><span id="toc32">グーグル独自の機能</span></h3>



<p>グーグルスプレッドシートだからこその機能です。<br>Gmail、グーグルカレンダーのとの連動が可能です。</p>



<h4 class="wp-block-heading"><span id="toc33">メールの送信</span></h4>



<p>メールの送信を行うことができます。<br>TO、CC、BCCも設定可能。<br>本文は、HTML形式で書くorセルに本文を設定しておき、その本文を参照することも可能です。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
function code_mail(){
  
  var recipient=&quot;blueinfinity4ever@gmail.com&quot;//宛先
  var subject=&quot;【サンプル】メールテスト&quot;//題名
  var body=&quot;メールテストをしております\n\n&quot;//本文
  
  //MailApp.sendEmail( 送信先, タイトル, メッセージ )
  MailApp.sendEmail(recipient, subject, body)
  
  
  //toなどなども指定できる。//
  MailApp.sendEmail({
    to: &quot;blueinfinity4ever@gmail.com&quot;, //to
    cc: &quot;blueinfinity4ever@gmail.com&quot;, //cc
    bcc: &quot;code1@gmail.com, code2@hotmail.com&quot;, //bcc
    //name: &quot;nujonoa&quot;,//送信者名を変えられる。
    subject: &quot;件名&quot;,  //件名
    body: &quot;本文\nこれは本文です&quot;, //分分
    htmlBody: &quot;&lt;b&gt;本文&lt;/b&gt;&lt;br&gt;これは本文です&quot;, //htmlで装飾した本文
    //replyTo: &quot;code3@hotmail.com&quot;,　//返信先を指定できる。
});
  
  //POPUPで確認してからメールを送信
  var popUp = Browser.msgBox(&quot;送信確認です。&quot;, add + &quot;へ送信しますか？&quot;, Browser.Buttons.OK_CANCEL);
  if (popUp == 'ok') {
    var mailSubject = sheet.getSheetByName('メールテンプレ').getRange(5,2).getValue();
    var mailBody = sheet.getSheetByName('メールテンプレ').getRange(6,2).getValue();
    GmailApp.sendEmail(add, mailSubject, mailBody ,{cc:&quot;blueinfinity4ever@gmail.com&quot;});
    Browser.msgBox(&quot;送信しました&quot;);
  } else {
    Browser.msgBox(&quot;キャンセルしました&quot;);
  }
  
}
</pre></div>


<h2 class="wp-block-heading"><span id="toc34">まとめ</span></h2>



<p>ということで、</p>



<p>今回は、スプレッドシートのVBA＝GASの使い方を説明させてもらいました。</p>



<p>これからどんどん必要になっていくジャンルだと思いますので、<br>ぜひ覚えてみてはいかがでしょうか？</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/introduction-to-gas-and-sample-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
