<?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>二次元配列 | nujonoa_blog</title>
	<atom:link href="https://nujonoa.com/tag/%e4%ba%8c%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://nujonoa.com</link>
	<description>人生に役立つデータ集</description>
	<lastBuildDate>Tue, 25 Aug 2020 15:25:59 +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>二次元配列 | nujonoa_blog</title>
	<link>https://nujonoa.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【GAS】メールを検索して書き出す方法(含む返信メール)。人、時間の指定、配列の使い方など</title>
		<link>https://nujonoa.com/how-to-extract-specific-emails-with-gas/</link>
					<comments>https://nujonoa.com/how-to-extract-specific-emails-with-gas/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Fri, 28 Aug 2020 23:00:00 +0000</pubDate>
				<category><![CDATA[GAS]]></category>
		<category><![CDATA[二次元配列]]></category>
		<category><![CDATA[メール]]></category>
		<category><![CDATA[検索]]></category>
		<category><![CDATA[抜き出す]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=6213</guid>

					<description><![CDATA[目次 【GAS】メールを検索して書き出す方法(含む返信メール)。人、時間の指定、配列の使い方などこのコードで出来ること。GASの入ったサンプルファイルのダウンロード使っているスクリプトを簡単に説明特定のメールを検索①検索 [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <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">【GAS】メールを検索して書き出す方法(含む返信メール)。人、時間の指定、配列の使い方など</a></li><li><a href="#toc2" tabindex="0">このコードで出来ること。</a></li><li><a href="#toc3" tabindex="0">GASの入ったサンプルファイルのダウンロード</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">②GmailApp.search()でメールを検索</a></li><li><a href="#toc8" tabindex="0">③メッセージに切り分け</a></li></ol></li><li><a href="#toc9" tabindex="0">メールの整理</a></li><li><a href="#toc10" tabindex="0">二次元配列の長さを合わせて貼り付け</a></li></ol></li><li><a href="#toc11" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【GAS】メールを検索して書き出す方法(含む返信メール)。人、時間の指定、配列の使い方など</span></h2>



<p>昨今の仕事では、メールでのやりとりが不可欠となってきましたが、</p>



<p class="is-style-alert-box">逆にメールが多すぎて処理しきれない。<br>どれを対応したかわからなくなってくる。</p>



<p>ということが多々あると思います。</p>



<p>GASを用いることで、グーグルスプレッドシートから、<br>メールを送れることはご存じかと思いますが、<br><span class="marker-animation">特定のメールを拾い上げてくることもできます。</span></p>



<p>そこで、</p>



<p class="is-style-alert-box">・ある人からのメールがたまっているから一つずつ処理していきたい。<br>・会議の場で、PJの人から送られてきたメールの進捗を1件ずつ確認していきたい。</p>



<p>という希望を叶えるような、スプレッドシートのgasを考えてみました！</p>



<p><span class="marker-animation">サンプルファイルを紹介しますので、<br>これをテンプレートに、自分なりにカスタマイズして使ってもらえたらと思います！</span></p>



<h2 class="wp-block-heading"><span id="toc2">このコードで出来ること。</span></h2>



<p>このスプレッドシートでできることは、</p>



<p>①指定日以降の、<span class="marker-animation-2071">指定した送信者からのメール</span>を検索し、<br>②<span class="marker-animation-2071">古い順に並べて表示</span>させることができます。<br>・題名が同じものは同じ行内で、左から最新の返信が表示されます。<br>・メールのリンクアドレスも張っておりますので、リンクに飛ぶことも可能です。</p>



<p>下の画像は、検索結果です。(<a rel="noopener" target="_blank" href="https://nujonoa.com/wp-content/uploads/2020/07/image-36-900x452.png">クリックして拡大<span class="fa fa-external-link internal-icon anchor-icon"></span></a>)<br>上から順に、古いものから検索されたメールが並び、題名の同じチェーンメール(返信)については、右側に並べられて行っているのが分かるかと思います。</p>



<figure class="wp-block-image size-large"><a rel="noopener" target="_blank" href="https://nujonoa.com/wp-content/uploads/2020/07/image-36.png"><img fetchpriority="high" decoding="async" width="900" height="452" src="https://nujonoa.com/wp-content/uploads/2020/07/image-36-900x452.png" alt="" class="wp-image-6565" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-36-900x452.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-36-500x251.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-36-300x151.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-36-768x385.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-36-1536x771.png 1536w, https://nujonoa.com/wp-content/uploads/2020/07/image-36.png 1612w" sizes="(max-width: 900px) 100vw, 900px" /></a></figure>



<p>実行の仕方は、<br>①いつから<br>②誰から<br>③最大件数<br>を打ち込み、「実行」ボタンを押すだけです。</p>



<p>実行した結果を動画にしてみました。<br>少し長いです…</p>



<figure class="wp-block-video"><video controls muted src="https://nujonoa.com/wp-content/uploads/2020/07/2020-07-17_22h52_22.mp4"></video></figure>



<h2 class="wp-block-heading"><span id="toc3">GASの入ったサンプルファイルのダウンロード</span></h2>



<p>GASの入ったサンプルファイルは下のボタンからダウンロードできます。</p>



<div class="wp-block-cocoon-blocks-button-1 button-block"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/10z60MS07m1lnwBmJ0KnagRbOLzmA-bnZfQkPqn1BXnI/edit?usp=sharing" class="btn btn-l btn-shine">メール検索ソフトを立ち上げる<span class="fa fa-external-link external-icon anchor-icon"></span></a></div>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p>そのままですと閲覧のみ可能になっていますので、<br>ファイル→コピーを作成で、自分のスプレッドシートにコピーを作成してください。</p>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box"><input id="toggle-checkbox-20200809233634" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-20200809233634">スプレッドシートをコピーする方法(クリックして開く)</label><div class="toggle-content">
<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="394" height="781" src="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png" alt="" class="wp-image-6679" srcset="https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3.png 394w, https://nujonoa.com/wp-content/uploads/2020/08/2020-08-09_23h24_07-3-300x595.png 300w" sizes="(max-width: 394px) 100vw, 394px" /><figcaption>スプレッドシートをコピーする方法</figcaption></figure></div>
</div></div>
</div></div>



<p></p>



<h2 class="wp-block-heading"><span id="toc4">使っているスクリプトを簡単に説明</span></h2>



<p>使っているスクリプトについて簡単に説明していきます。</p>



<h3 class="wp-block-heading"><span id="toc5">特定のメールを検索</span></h3>



<p>まずは、特定のメールを抜き出す方法です。<br>特定のメールを書き出しているコードは、下記に記載する部分となっており、<br>①検索キーを作成<br>②GmailApp.search()でメールを検索<br>③GmailApp.getMessagesForThreads()で一つ一つのメッセージに分解しています。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  const dateafter=Utilities.formatDate(sheet1.getRange(1,2).getValue(), 'Asia/Tokyo', 'yyyy/MM/dd');
  const fr=sheet1.getRange(1,6).getValue()  
  const KENSU=sheet1.getRange(1,9).getValue()
  
  var findkey = &quot;after:&quot;+dateafter+&quot; FROM:&quot;+fr
  var kensakukekka = GmailApp.search(findkey,0,KENSU);
  var Msg = GmailApp.getMessagesForThreads(kensakukekka);//二次元配列
</pre></div>


<h4 class="wp-block-heading"><span id="toc6">①検索キーの作成</span></h4>



<p>まずは検索キーの作成です。</p>



<p>Gmailapp.serchは様々な検索に対応していますが、今回は、<br>誰から来たのか　＝　from:<br>何時以降のメッセージか　＝after:<br>で検索をかけております。※空白を空けて検索することでand検索が可能です。</p>



<h4 class="wp-block-heading"><span id="toc7">②GmailApp.search()でメールを検索</span></h4>



<p>検索キーが作成出来たら、そのキーを使い、</p>



<p>GmailApp.search(findkey,0,KENSU);</p>



<p>でメールを検索します。<br>最大件数も指定できますので多くなり過ぎないように、指定しています。</p>



<h4 class="wp-block-heading"><span id="toc8">③メッセージに切り分け</span></h4>



<p>GmailApp.search(findkey,0,KENSU);で取り出せた情報は、<br>スレッドの情報になっています。<br>ですので、これを一つ一つ切り分けていく必要があります。</p>



<p>それが</p>



<p>var Msg = GmailApp.getMessagesForThreads(kensakukekka);</p>



<p>です。Msgで取り出した情報は2次元配列になっております。</p>



<p>少しわかりにくいですが、スレッドとメッセージのイメージは<br>下記のとおりです。</p>



<div class="wp-block-cocoon-blocks-sticky-box blank-box sticky block-box">
<p class="has-text-align-center">スレッドとメッセージのイメージ<br>スレッド①(メッセージ　本文A1→返信B1→返信C1→返信D1)<br>スレッド②(メッセージ　本文A2→返信B2→返信C2→返信D2)</p>



<p class="has-text-align-center">切り分けた後は2次元配列<br>・Msg[0][0]=本文A1<br>・Msg[1][2]=返信C2<br>※配列は[0]からスタート。</p>
</div>



<h3 class="wp-block-heading"><span id="toc9">メールの整理</span></h3>



<p>スレッドを抜き出すことができましたので、<br>次はその情報を整理していきます。</p>



<p>date,from,subj,body,permなどで情報を取り出し、2次元配列を作っていきます。</p>



<p>スレッドごとに分ける必要があるため、unshiftとconcatを使い分けています。</p>



<figure class="wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-nujonoa-blog"><div class="wp-block-embed__wrapper">

<a rel="noopener" target="_blank" href="https://nujonoa.com/how-to-combine-two-dimensional-arrays/" title="【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-right cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="http://nujonoa.com/wp-content/uploads/2019/05/25052019121319A-160x90.png" alt="" class=" internal-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方</div><div class="blogcard-snippet internal-blogcard-snippet">【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方スプレッドシートで、GASを使っていくうえで、非常に重要になるのが・二次元配列を使えるかどうか？です。というのも、20回掛け算する場合、・セル毎に計算　→　4...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nujonoa.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nujonoa.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.07.14</div></div></div></div></a>
</div></figure>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
  /* 各メールから日時、送信元、件名、内容を取り出す */
  for(var i=0;i&lt;Msg.length;i++){

    if(i%5==0){book.toast(&quot;スクリプトを実行中です。&quot; + i + &quot;/&quot; + Msg.length , &quot;実行中&quot;, 5)}
    
    for(var j=0;j&lt;Msg&#x5B;i].length;j++){
      
　　　
　　　var date = Msg&#x5B;i]&#x5B;j].getDate();
　　　var from = Msg&#x5B;i]&#x5B;j].getFrom();
　　　var subj = Msg&#x5B;i]&#x5B;j].getSubject();
　　　var body = Msg&#x5B;i]&#x5B;j].getPlainBody().slice(0,200);
　　　var perm = kensakukekka&#x5B;i].getPermalink();

    if(j==0){OutputMsg.unshift(&#x5B;date,from,body])}
     else{
     OutputMsg&#x5B;0]=(&#x5B;date,from,body]).concat(OutputMsg&#x5B;0])
     }
  }  
  OutputMsg&#x5B;0]=(&#x5B;subj,perm]).concat(OutputMsg&#x5B;0])
  
  //&#x5B;date,from,subj,body,perm]
  
}
</pre></div>


<h3 class="wp-block-heading"><span id="toc10">二次元配列の長さを合わせて貼り付け</span></h3>



<p>最後に2次元配列の長さを合わせて貼り付けです。</p>



<p>上記のプログラムで抜き出すと、<br>スレッドの返信の数によって、<br>列の長さが異なっています。</p>



<p>GASは列の数をすべて合わせないと一括出力できない設定になっていますので、</p>



<p>ですので、一番長い列の長さを検索し、<br>すべての行をその長さに変更します。</p>



<p>そのあとsetvaluesで二次元配列をセルに代入します。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
  for(var i=0;i&lt;OutputMsg.length;i++){
    var cn=OutputMsg&#x5B;i].length
    if(cn&gt;maxc){maxc=cn}
    }

  for(var i=0;i&lt;OutputMsg.length;i++){
      OutputMsg&#x5B;i].length=maxc
    }

    if(Msg.length&gt;0){
    var mySheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メール確認');
    mySheet.getRange(3, 2, OutputMsg.length,maxc).setValues(OutputMsg);
  }
</pre></div>


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



<p>GASを使ってメールの検索ができることは知っており、<br>どのように使うべきか、、と悩んでいましたが、</p>



<p>メールで仕事を行っている現代において、<br>メールのやりとりを見れば＝TODOリストになっていることが分かりました。</p>



<p>ぜひ、このファイルを参考に、<br>仕事で活用していただけたらと思います！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/how-to-extract-specific-emails-with-gas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="http://nujonoa.com/wp-content/uploads/2020/07/2020-07-17_22h52_22.mp4" length="466905" type="video/mp4" />

			</item>
		<item>
		<title>【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方</title>
		<link>https://nujonoa.com/how-to-combine-two-dimensional-arrays/</link>
					<comments>https://nujonoa.com/how-to-combine-two-dimensional-arrays/#respond</comments>
		
		<dc:creator><![CDATA[nujonoa]]></dc:creator>
		<pubDate>Tue, 14 Jul 2020 11:00:00 +0000</pubDate>
				<category><![CDATA[GAS]]></category>
		<category><![CDATA[二次元配列]]></category>
		<category><![CDATA[結合]]></category>
		<category><![CDATA[unshift]]></category>
		<category><![CDATA[oush]]></category>
		<category><![CDATA[concat]]></category>
		<guid isPermaLink="false">http://nujonoa.com/?p=6215</guid>

					<description><![CDATA[目次 【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方pushunshiftconcatsetvaluesについてまとめ 【GAS入門】2次元配列の結合方法。unshift,push,c [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方</a></li><li><a href="#toc2" tabindex="0">push</a></li><li><a href="#toc3" tabindex="0">unshift</a></li><li><a href="#toc4" tabindex="0">concat</a></li><li><a href="#toc5" tabindex="0">setvaluesについて</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">【GAS入門】2次元配列の結合方法。unshift,push,concatの使い方</span></h2>



<p>スプレッドシートで、GASを使っていくうえで、非常に重要になるのが</p>



<p>・二次元配列を使えるかどうか？</p>



<p>です。</p>



<p>というのも、20回掛け算する場合、<br>・セル毎に計算　→　4.4秒<br>・配列で計算　→　0.2秒</p>



<p>と、20倍もの差が生じます。<br>というか、セル毎に計算となると、正直使い物にならないくらい遅いです。。<br>5個セルを更新しただけで1秒かかります…</p>



<p>しかし、二次元配列は、正直理解しづらく苦戦すると思います。</p>



<p>そこで今回は、二次元配列をより簡単に作成するための<br>「push」「unshift」「concat」について説明していきます。</p>



<h2 class="wp-block-heading"><span id="toc2">push</span></h2>



<p>まずはpushからです。</p>



<p>プッシュのイメージは、下記の通りで、<br>配列と配列を縦に合体させます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="348" src="https://nujonoa.com/wp-content/uploads/2020/07/image-28-900x348.png" alt="" class="wp-image-6327" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-28-900x348.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-500x193.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-300x116.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-768x297.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-28.png 951w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>FOR分と一緒に使うと非常に使い勝手が良いです。</p>



<p>1列目～10列目まで、足し算、掛け算を繰り返していく場合、<br>下記のようにpushを用いることで、配列に計算結果が追加されていきます。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
 for(var i=1;i&lt;=10;i++){  
   足し算=sh1.getRange(i,3).getValue()+sh1.getRange(i,4).getValue()
   掛け算=sh1.getRange(i,3).getValue()*sh1.getRange(i,4).getValue()
   計算結果.push(&#x5B;足し算,掛け算])
 }  
</pre></div>


<p>・1行目の[足し算1,掛け算1]に<br>pushで2行目の[足し算2,掛け算2]を追加。</p>



<p>・[足し算1,掛け算1]<br>　[足し算2,掛け算2]　に<br>pushで3行目の[足し算3,掛け算3]を追加。・・・・</p>



<p>と10行目まで計算していくイメージです。</p>



<p>上記のプログラムを参考に、<br>①足し算、引き算を自分が計算したいものに変え、<br>②iを、行の初め～終わりまでに設定することで、<br>簡単に行の初めから行の終わりまでの計算を行い、配列に代入することができます。</p>



<h2 class="wp-block-heading"><span id="toc3">unshift</span></h2>



<p>次はunshiftです。</p>



<p>unshiftはpushと似ていますが、配列を前方に結合することができます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="347" src="https://nujonoa.com/wp-content/uploads/2020/07/image-29-900x347.png" alt="" class="wp-image-6329" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-29-900x347.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-29-500x193.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-29-300x116.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-29-768x296.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-29.png 966w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>計算式によっては、行をさかのぼって計算させたいこともあるかと思いますので、その場合は、このunshiftを用いるとうまくいくと思います。</p>



<h2 class="wp-block-heading"><span id="toc4">concat</span></h2>



<p>つぎはconcatです。</p>



<p>CONCATは、pushやunshiftとは違い、配列の要素を結合する数式です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="215" src="https://nujonoa.com/wp-content/uploads/2020/07/image-30-900x215.png" alt="" class="wp-image-6330" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-30-900x215.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-30-500x120.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-30-300x72.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-30-768x184.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-30.png 1246w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>一見、pushやunshiftと同じように見えるのですが、pushで同じようなことを行うと、下に示す通り、配列そのものを挿入してしまうことになり、3次元配列になってしまいます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="226" src="https://nujonoa.com/wp-content/uploads/2020/07/image-31-900x226.png" alt="" class="wp-image-6331" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-31-900x226.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-31-500x125.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-31-300x75.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-31-768x192.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-31.png 1197w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>少しわかりにくいので、もう少し説明すると、</p>



<p>・concatの場合<br>結合結果[0][4]=A7<br>が出力されますが、</p>



<p>・pushで記述した場合、<br>結合結果[0][4]=A7,B7,C7,D7<br>と出力されてしまいます。</p>



<p>pushで記述した場合に、A7を取り出したいときは、<br>結合結果[0][4][1]=A7<br>となり、3次元的に指示をしないといけないことになります。</p>



<p>spreadseatに張り付ける際には、二次元配列である必要があるので、これでは成立しませんので、concatで要素を追加する必要があります。</p>



<h2 class="wp-block-heading"><span id="toc5">setvaluesについて</span></h2>



<p>push,unshift,concatについて学んできましたが、<br>ここで一つ問題が生じます。</p>



<p>それは、「列数がバラバラになる可能性があることです。」<br>setvaluesで二次元配列をセルに転記する場合、</p>



<p>・列数がすべて一致している。<br>且つ<br>・行数、列数をきちんと指定してあげる</p>



<p>必要があります。</p>



<p>行数は、【二次元配列.length】で簡単に確認することができるのですが、<br>列数はそう簡単にいきません。。</p>



<p>先ほど説明したpushで作り上げた配列をsetvaluusでspreadsheetに記載しようとすると、</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="348" src="https://nujonoa.com/wp-content/uploads/2020/07/image-28-900x348.png" alt="" class="wp-image-6327" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-28-900x348.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-500x193.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-300x116.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-28-768x297.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-28.png 951w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>下記の通り、【データの列と指定の範囲が違う。】エラーが発生してしまいます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="39" src="https://nujonoa.com/wp-content/uploads/2020/07/image-33-900x39.png" alt="" class="wp-image-6333" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-33-900x39.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-33-500x22.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-33-300x13.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-33-768x34.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-33.png 1123w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p>このエラーを防ぐためには、列数をそろえてあげる必要があります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="900" height="309" src="https://nujonoa.com/wp-content/uploads/2020/07/image-35-900x309.png" alt="" class="wp-image-6335" srcset="https://nujonoa.com/wp-content/uploads/2020/07/image-35-900x309.png 900w, https://nujonoa.com/wp-content/uploads/2020/07/image-35-500x171.png 500w, https://nujonoa.com/wp-content/uploads/2020/07/image-35-300x103.png 300w, https://nujonoa.com/wp-content/uploads/2020/07/image-35-768x263.png 768w, https://nujonoa.com/wp-content/uploads/2020/07/image-35.png 1082w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption>列右数を合わせたイメージ</figcaption></figure>



<p>push,unshift,concatなどをした後に、spreadsheetに張り付ける場合は、<br>下に示すようなコードで、二次元配列を変換してあげてから貼り付ける必要があります。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: jscript; title: ; notranslate">
    for(var i=0;i&lt;valArray.length;i++){
    var cn=valArray&#x5B;i].length
    if(cn&gt;maxc){maxc=cn}
    }

  for(var i=0;i&lt;valArray.length;i++){
      valArray&#x5B;i].length=maxc
    }
   
   sh1.getRange(指定行, 指定列, valArray.length,maxc).setValues(valArray);
</pre></div>


<p>以上のコードで、おこなっていることは非常に単純で、<br>・二次元配列の1行目から、一番長い列の数(maxc)を見つけ出します。<br>・列数をすべて一番長い列(maxc)に変換します。<br>・行数、列数がわかったので、シートの指定位置に貼り付けます。<br>の3ステップです。</p>



<p>ここまでできて、配列の操作については、完了すると思います。</p>



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



<p>VBAにも言えることなのですが、</p>



<p>・プログラムを早く動かすためには、とにかく「配列」を用いて、<br>　セルへの値の記載を極力減らすことが重要です。</p>



<p>スプレッドシートのgasについては、特にその傾向が顕著になりますので、<br>push,unshift,concatを用いて、超高速化していきましょう！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nujonoa.com/how-to-combine-two-dimensional-arrays/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
