sh.getRange(1 + i, 4).setValue(ary[i][0]);sh.getRange(1 + i, 5).setValue(ary[i][1]);sh.getRange(1 + i, 6).setValue(ary[i][2]); そのため、[i](変数aryの1番目~5番目の行)で配列の行の要素数を指定し、次の[0]~[2](変数aryの1番目~3番目の列)で配列の列の要素数を指定して、格納されている値をスプレッドシートのD列~F列に記載していきます。, 前述の「二次元配列を宣言、作成してスプレッドシートに貼りつける」でも既にやってはいますが、配列の大きさを調べた上で、貼り付けに必要な範囲を確保してスプレッドシート貼り付ける事もできます。. 先ほどもお伝えしましたが、プロパティがあることで値がどのような意味なのかわかりやすいですね。, そして、次の章でも説明しますが、配列は「インデックス」を「キー」として、オブジェクトは「プロパティ」を「キー」として箱の中にある値を取り出したり、逆に新しく値を入れたりすることを行います。, それぞれの値にアクセスするには「プロパティ(キー)」を使って次のように記述します。 © 2020 zak-papa All rights reserved. 「二次元配列」の操作. 以前の記事で、Google Apps Scriptにおける配列の重要性についてご紹介しましたが、今回は行と列を格納する事のできる二次元配列についてご紹介します。, まず二次元配列とは何なのかについてみていきます。 その前にまず、下記のようなシートを用意します。. www.yukibnb.com, 今回はその応用として二次元配列の要素を追加・削除する方法をサンプルやGIF動画を使ってやさしく解説します。, 「一次元配列と二次元配列の違いって?」、「一次元配列の要素を追加・削除する方法って?」という方はまず上記ふたつの記事をささっとお読み頂くことをおすすめします。, 『priceListにはレモン、オレンジ、桃の料金が掲載されている。この表にリンゴの料金も掲載したい』という場合、一次元配列["apple", "JPY250"]を追加する必要があります。, これが「二次元配列内の一次元配列を丸々操作する」ということです。行を追加するイメージです。, 次に『priceListにはレモン、オレンジ、桃の料金が掲載されている。料金以外に産地も掲載したい』という場合、["orange","JPY150"]に産地を追加して["orange","JPY150","Brazil"]とする必要があります。, これが「二次元配列内の一次元配列の中の値を操作する」ということです。列を追加するイメージです。, 括弧内に一次元配列["apple", "JPY250"]を入力することで、二次元配列priceListの先頭に一次元配列["apple", "JPY250"]を追加しました。, 括弧内に一次元配列["apple", "JPY250"]を入力することで、二次元配列priceListの末尾に一次元配列["apple", "JPY250"]を追加しました。, 二次元配列priceListの先頭の一次元配列["lemon","JPY100"]を削除しました。, 二次元配列priceListの末尾の一次元配列["peach","JPY200"]を削除しました。, 二次元配列の中の一次元配列はpriceList[インデックス番号]で指定できます。, 例えば["orange","JPY150"]を指定したい場合、priceList[1]と書けばOKです。, そして["orange","JPY150"]の先頭に値を追加したい場合、priceList[1].unshift(値)と書きます。, priceListのインデックス番号1、["orange","JPY150"]の先頭に産地の"Brazil"を追加しました。, priceListのインデックス番号1、["orange","JPY150"]の末尾に産地の"Brazil"を追加しました。, priceListのインデックス番号1、["orange","JPY150"]の先頭の要素"orange"を削除しました。, priceListのインデックス番号1、["orange","JPY150"]の末尾の要素"JPY150"を削除しました。, 今回解説した方法にfor文などのループを組み合わせると、スプレッドシートを高速で操作できるようになります。, 当ブログでは民泊運営や様々な業務を自動化・効率化するための情報を紹介しています。Twitterで最新記事や人気記事をお知らせしていますので、是非フォローお願いします!, 海外製SaaSの日本事業をしています。縁あって全く異なる民泊業界にも2016年から関わっています。民泊業務や各種業務を自動化・効率化するためのブログを執筆しています。お気軽にコメント・お問い合わせください :), 業務効率化とおもてなし力アップを同時にするために、外国から来るお客様向けに各種家電用の英語シールを作りました。↓↓↓, 民泊向けのオリジナル地図(アクセスマップ)作成のご依頼はこちらからお願いします。↓↓↓, 海外製SaaSの日本事業をしています。縁あって全く異なる民泊業界にも2016年から関わっています。民泊業務や各種業務を自動化・効率化するためのブログを執筆しています。, こんにちは! Yuki (@yukibnb) です。今回はGoogle Apps Script…, こんにちは! Yuki (@yukibnb) です。LINE Messaging APIとGoog…, こんにちは! Yuki (@yukibnb) です。Google Apps Script (GAS)…, 2020-10-31こんにちは! Yuki (@yukibnb) です。前回はGoogle A…, //ログ⇒[["apple","JPY250"],["lemon","JPY100"],["orange","JPY150"],["peach","JPY200"]], //ログ⇒[["lemon","JPY100"],["orange","JPY150"],["peach","JPY200"],["apple","JPY250"]], //ログ⇒[["orange","JPY150"],["peach","JPY200"]], //ログ⇒[["lemon","JPY100"],["orange","JPY150"]], //二次元配列のインデックス番号1、["orange","JPY150"]の先頭に要素を追加する, //ログ⇒[["lemon","JPY100"],["Brazil","orange","JPY150"],["peach","JPY200"]], //二次元配列のインデックス番号1、["orange","JPY150"]の末尾に要素を追加する, //ログ⇒[["lemon","JPY100"],["orange","JPY150","Brazil"],["peach","JPY200"]], //二次元配列のインデックス番号1、["orange","JPY150"]の先頭の要素"orange"を削除する, //ログ⇒[["lemon","JPY100"],["JPY150"],["peach","JPY200"]], //二次元配列のインデックス番号1、["orange","JPY150"]の末尾の要素"JPY150"を削除する, //ログ⇒[["lemon","JPY100"],["orange"],["peach","JPY200"]], 【応用編第3話】コピペでOK!スプレッドシートを使ってLINE BOTにスタンプや画像を返信させる方…. sh.getRange(1,4,rows,cols).setValues(ary); で配列全体をスプレッドシートに記入するための範囲を確保しつつ、配列に代入された値をスプレッドシートのD列~F列に記入しています。, スプレッドシートへの貼り付けに必要な範囲を確保し、二次元配列のデータを貼り付ける 処理結果, で、変数ary[i][0]~ary[i][2]に格納された値を結合し、スプレッドシートのD列に記入しています。, 以上、二次元配列を利用した例をいくつかご紹介しましたが、以前ご紹介した配列の記事と同様に処理速度においても非常に優れていますので、Google Apps Scriptを使用していく上で二次元配列は欠かせないものです。, Google Apps Script(GAS)お仕事・副業探し(Google Apps Script・GAS)Googleフォーム(Google Apps Script・GAS)Gメール(Google Apps Script・GAS)HtmlService(Google Apps Script・GAS)return(Google Apps Script・GAS)エラー検知(Google Apps Script・GAS)スクリプトエディタ(Google Apps Script・GAS)スプレッドシート(Google Apps Script・GAS)セル操作(Google Apps Script・GAS)トリガー(Google Apps Script・GAS)ファイル操作(Google Apps Script・GAS)メッセージボックス(Google Apps Script・GAS)ログ出力(Google Apps Script・GAS)処理速度(Google Apps Script・GAS)列、行(Google Apps Script・GAS)文字列操作(Google Apps Script・GAS)日時(Google Apps Script・GAS)条件分岐(Google Apps Script・GAS)演算子(Google Apps Script・GAS)繰り返し処理(Google Apps Script・GAS)配列(Google Apps Script・GAS)関数の実行(Google Apps Script・GAS), Google Apps Scriptでスプレッドシートの処理を自動化する上で、配列を扱えるようになるのは非常に重要です。 なぜかというと、配列を使って処理を行わないと、処理の量や内容によっては非常に、とても、すごく重くなるからです。 今回は、Google Apps Scriptにおける配列についてご紹介します。, 今回は、Google Apps Scriptで、変数に代入した値などを出力して、スクリプトの動作が正しいかを確認するための便利なスクリプトをご紹介します。, Google Apps Scriptでフリーランスのお仕事!高額報酬ありの求人サイトは?, 【Google Apps Script(GAS)】文字列の置換と削除(replace), 【Google Apps Script(GAS)】文字列の改行(メッセージボックスの改行), 【Google Apps Script(GAS)】Googleフォームの回答内容を、好みの形でスプレッドシートに集計する. 「i < 3」を「i < 4」に変更すれば確かに出力はできますが...。, ただ、この場合だとさらに要素の数が増えた場合に毎回手直しが必要になり、手間が発生してしまいます。, そこで、この「4」という数字に着目してみましょう。 実行してみると下記の通り「二次元配列」で取得できていることが分かると思います。, ※ このような画面が出てきたら次の手順で許可してあげましょう。スプレッドシートを扱う場合、初回のみ「認証」が必要になります。, 冒頭でお伝えした通り、GASでは1回あたりの処理時間に制限(6分)があります。 この中の、 [[a1, b1, c1], [a2, b2, c2], [a3, b3, c3], [a4, b4, c4], [a5, b5, c5]] が二次元配列の状態になっています。 スプレッドシートに記載されているデータと、上記の二次元配列のデータを見比べると、二次元配列のイメージがなんとなくついてくるようにも思われます。 [0, 5]のような配列の形ではなく、(0, 5)の形で( )の中に数字を入れて追加します。, それでは今度は「削除」する方法を見ていきましょう。 特に「push()」は使用頻度が高いのでしっかりと使い方を覚えておきましょう。, 先ほどは配列の要素の「先頭」と「末尾」のみに対して操作(追加・削除)を行ってきました。, では、配列の「途中」に追加をしたり、または先ほどできなかった「複数の要素の削除」をする場合はどのようにしたらよいでしょうか。 こんにちは! Yuki (@yukibnb) です。前回Google Apps Script (GAS) で一次元配列の要素を追加・削除する方法をGIF動画付きで解説しました。 www.yukibnb.com今回はその応用として二次元配列の要素を追加・削除する方法をサンプルやGIF動画を使ってやさしく解説します。 「ヤッホー」は大きな箱のインデックス「1」の中にあり、さらにその中の小さな箱のインデックス「2」にありますね。なので、「persons[1][2]」と記述することでデータを取得することができます。, つまり、まずは①大きな(外側の)配列のインデックスを取得し、その後に②小さな(内側の)配列のインデックスを見ていけばいいですね。, 別の見方もしてみましょう。スプレッドシート上ではこのように考えるとわかりやすいかと思います。, 「1行目」と「A列」どちらもスタートは「0」であり、そこから目的の値まで縦(下)に何個進んで、横(右)に何個進むかで考えると上記と同じ記述の仕方になります。, 以上、「二次元配列」についてお伝えしてきました。 先ほどの「名前」の部分を「プロパティ(キー)」といい、「プロパティ」と「値」の間には「:(コロン)」で繋げて記述します。, 下図の2つ目のように「改行」して書くこともでき、こちらの方が読み易くなります。 1つ目の「.(ドット)」を使って記述することが一般的です。, 続いて、オブジェクトの中身を「更新」してみます。更新する場合は、次のように記述します。, では、配列と同じように「zak-papa」を「zak-mama」に、「35」を「28」に、「よろしく」を「ヤッホー」に更新してみましょう。, また、オブジェクトの「プロパティ」にないものを記述すると次のように新しい要素の「追加」になります。, 以上、「配列」と「オブジェクト」についてお伝えしました。盛り沢山の内容で少し疲れましたね。お疲れ様でした。, プログラミング初心者には最初は理解が難しかったかもしれませんが、「配列」も「オブジェクト」も、「条件分岐」や「繰り返し処理」と同じく他の言語でも同じように扱うことができますので是非使い方をマスターしておきましょう。, そして、GASにとって特に「配列」は、データの処理時間を左右する重要な役割を持つものになります。こちらの記事でスプレッドシートのデータ取得に関して説明していますので実際の使い方はご確認いただければと思います。, zak-papaです。普段は人事部で仕事をしていますが現在は長期の育児休業を取得中です。自身のアウトプットの場及び備忘録も兼ねてブログを始めました。, 本ブログでは、子育てに関する情報やノンプログラマー向けに実務に活かせる情報をお届けしたいと思っています。【2020年1月時点】. 【Python】Requests、Beautiful Soupでスクレイピングした結果をスプレッドシート、Excelに出力しよう, 【GAS】スクリプトエディタからワークブック、ワークシート、セル範囲を取得してみよう, 【Python】「gspread」で「 Googleスプレッドシート」のセルの値を取得・入力するなどセルを操作してみよう, 【Python】「gspread」で「 Googleスプレッドシート」のワークブック、ワークシートを操作してみよう, 【GAS】JavaScript基本④ 〜 for文、while文で「繰り返し(ループ)」処理をしてみよう, // インデックス「1」の位置から「2つ分(25、35)」を削除して「2つ分(20、30)」を追加( = 変更), ※「C2」を1つのセルとして取得する簡単な方法はありますが、今回は「二次元配列」から要素を取得する方法をお伝えしています。, JavaScript基本④ 〜 for文、while文で「繰り返し(ループ)」処理をしてみよう, JavaScript基本⑤ 〜 複数の値を扱う「配列」「オブジェクト」を理解しよう. 続いて、「二次元配列」の各要素にアクセスする方法を見ていきましょう。 「一次元配列」では、「 配列名[インデックス] 」という形で「インデックス」を「キー」として値を取得することができましたね。 「先頭」の値を削除する場合は「shift()」、「末尾」の値を削除する場合は「pop()」を使います。( )の中は何も記述せずに使用します。, なお、値の「削除」は先頭と末尾のそれぞれ「1つ」のみになります。では、先ほどの例文に続けて記述してみましょう。, 今回お伝えした4つのメソッドは、配列の要素数を数えなくても「自動」で先頭と末尾に対して処理を実行してくれる便利なものです。 配列オブジェクトのループ処理で見かけるfor...of。 MDMの解説にもあるとおり、文字列や配列オブジェクトのようは反復可能オブジェクト(iterablesオブジェクト)に対してループ処理ができます。 ということは、二次元配列に対してもループ処理できるではと試してみたら無事にできました。 var ss = SpreadsheetApp.getActiveSpreadsheet();var sh = ss.getActiveSheet();var ary = []; 次に、配列に格納した値を要素数を指定しながらスプレッドシートの右隣りに貼り付けてみます。 下記のサンプル4では、, で変数iの初期値を0とし、ary.lengthで配列変数aryの要素数を取得し(今回は5の数値が取得されます)、変数iがary.lengthより小さい間は処理を繰り返します。. var ary = [[‘A1’, ‘B1’, ‘C1’], [‘A2’, ‘B2’, ‘C2’], [‘A3’, ‘B3’, ‘C3’], [‘A4’, ‘B4’, ‘C4’], [‘A5’, ‘B5’, ‘C5’]]; sh.getRange(1,1,rows,cols).setValues(ary); で配列全体をスプレッドシートに記入するための範囲を確保しつつ、配列に代入された値をスプレッドシートに記入しています。. 前回は「for」文、「while」文による「繰り返し(ループ)」処理についてお伝えしました。, そして、GASのための「JavaScript」シリーズ第5弾は、「配列」と「オブジェクト」です。, これまでは1つのデータを「変数」に代入して使用していましたが、データが「複数」になると1つ1つ変数に代入して使用していくのは効率的とは言えません。, そのような場合に便利なものが「配列」と「オブジェクト」です。配列やオブジェクトを使えば複数の値も変数1つで扱うことができます。, また、GASでは特に「配列」の扱いが非常に大事になってきます。なぜなら、GASでは1回あたりの処理時間に制限(6分)があり、「配列」を利用して値を一気に取得したり書き込んだりすることで処理スピードを格段に向上させることができるからです。, 「配列」は内容が盛り沢山となりますので、途中で休憩しながら読み進めていただければと思います。, 【GAS】JavaScript基本① 〜 基本的な「書き方」や「変数」を理解しよう なお、値の「追加」は「1つ」だけでなく「複数」追加することが可能です。, 下記に簡単な配列(numbers)を用意しました。 開始位置は「10」の次、つまりインデックスが「1」ですね。そして今回は削除する値がないので「0」、その後に追加したい値を続けて記述します。, では最後に元の配列の状態に戻して終わりましょう。先ほど追加した「25」と「35」を削除して、「20」と「30」を追加すればいいですね。 この配列の先頭に「0」「5」、末尾に「50」「60」の2つずつを追加する場合は次のように記述します。 まだ理解が不十分の場合は、先に「オブジェクト」を学ぶと良いと思います。「オブジェクト」は基本のみ説明しています。, まずは「追加」からです。「先頭」に値を追加する場合は「unshift()」、「末尾」に値を追加する場合は「push()」を使います。 「要素数」を出力するには「length」というプロパティを使用し、次のように「配列名」と「length」を「.(ドット)」で繋げて記述します。, 最初の「zak-papa」の配列に戻って要素数を出力してみましょう。要素は「3つ」あったので「3.0」と出力されます。, 配列の中身を順に取り出すこともよくあります。今回は「fruits」配列を使って説明していきます。, こちらは配列の要素の出力と更新のところでも説明したので問題ないですね。 【GAS】JavaScript基本③ 〜 if文、switch文で「条件分岐」をしてみよう ※「C2」を1つのセルとして取得する簡単な方法はありますが、今回は「二次元配列」から要素を取得する方法をお伝えしています。, 先ほどの「箱」のイメージで見てみましょう。 【GAS】JavaScript基本⑤ 〜 複数の値を扱う「配列」「オブジェクト」を理解しよう, 例えば「人」の情報について扱う場合に、「名前」や「年齢」など1つずつ「変数」に代入して扱うことはできましたね。, 上記のように1つずつ変数を用いて扱うこともできますが、「人」の情報が複数ある場合に1つにまとめて管理できると便利ですね。そのような場合に使うのが「配列」になります。, 変数名は一般的に「複数形」が使われるので、変数「persons」に「配列」の形で代入するとこのようにスッキリ書くことができます。, まずは配列の書き方です。「[ ](角括弧)」と「,(カンマ)」を使用して記述します。, 例えば、下記のような書き方で、「①文字列のみ」、「②数字のみ」、「③文字列と数字を含んだ配列」などがあります。, 上記③を変数に「代入」する場合は、次のように変数名を「複数形」にして記述するのが一般的です。, 「配列」は1つの大きな箱(配列名:persons)の中に、それぞれの「値」がそれぞれの「箱」に入っているイメージを持ってもらえるとわかりやすいかと思います。, 「箱」の数と「値」の数は同じ「3つ」ですが、配列は「インデックス」という番号が振られ最初が「0」からスタートすることになるため注意が必要です。また、「値」のことを「要素」といいます。, では、次に「配列」からそれぞれの値を出力してみましょう。それぞれの値にアクセスするには「インデックス」を使って(「キー」として)次のように記述します。, 「zak-papa」を「zak-mama」に、「35」を「28」に、「よろしく」を「ヤッホー」に更新してみましょう。, では、配列の「インデックス」がない場合(インデックスが「3」の場合)、どのようになるでしょうか。スクリプトを実行してみると、次のように新しい要素の「追加」になります。, ただ、配列に要素を追加する場合は「push()」(後述)メソッドを使う場合が多いです。「push()」の使い方は後ほど説明します。, 最後に、配列の中に値がいくつあるか「要素数」を出力する方法も覚えておきましょう。 この書き方も是非覚えておきましょう。, 続いて、配列の「先頭」や「末尾」を操作(追加・削除)する便利なメソッドを説明します。, ここからは少し応用になります。上記で説明した基本を理解して余力があれば取り組みましょう。 var ss = SpreadsheetApp.getActiveSpreadsheet();var sh = ss.getActiveSheet(); var rows = ary.length;var cols = ary[0].length; ary.push([‘A’ + (i + 1),’B’ + (i + 1),’C’ + (i + 1)]), で、pushを使用して配列の末尾に配列を追加していく事で二次元配列を作成しています。.
良かった のに 英語, 九州 アンテナショップ 横浜, バンジージャンプ 竜神 事故, 藍 井 エイル ソードアートオンライン 主題歌, Mysql Pdo とは, タバコ おすすめ 女, 理科 6年 植物の体, 英語 エッセイ テーマ 比較, 腕時計 針 販売, 北海道 バスツアー 東京発, このアプリがデバイスに変更を加えることを許可しますか いいえ しか 出ない, Dish// 猫 ピアノ 楽譜 無料, 子供 一泊 預ける, 京都 名古屋 近鉄, クレジットカード 限度額 最低, 数字 語呂合わせ 4桁, 中央区新川 バイク 駐 車場, ピッチャー ホームラン 2020, 子供 自転車 チューブ交換, シール剥がし 残し 取り方, マイコレクション 最近追加したアイテム 削除, ワークマン ライディングジャケット プロテクター, 川崎市 中学校 修学旅行 場所, ベース スケール 指板, ユーチューブ 見れない 429, Xperia 画面 つかない, 電車 遅延 リアルタイム アプリ, エブリィワゴン Da64w ヒューズボックス, 町田 英語 カフェ バイト, 洗濯 週一 カビ, 富士通 リカバリ ディスクなし,