今回は、"オブジェクト・プロパティ・メソッド"について紹介します! 今回の記事では、文字列や配列の検索時に使うindexOfについて、使い方から、事例を踏まえながら解説していきます。, indexOf関数とは文字列や配列において、検索したい要素が配列内の先頭から何番目にあるかを教えてくれる関数のことです。配列内に要素が含まれているか否かの判定やスクレイピングで必要な部分までを切り取りしたいとき応用編で、配列内の重複の判定にも使用することができます。, GASでindexOfを使うときの基本的な書き方は下記の通りになります。例として文字列と配列の場合を用意しました。, 検索対象オブジェクト(文字列 or 配列).indexOf(検索したい要素, 検索開始位置)※検索開始位置は省略可能, 注意としては、検索したい位置は0からカウントされるので、イメージとしては普通に数えたときには〇番目となる〇ー1の値が返ってきます。, 文字列の「apple pie」で言えば、今回はpieのpの位置が何番目かを返してくるような書き方をしました。, apple pie の5番目以降(6文字目以降)でpが先頭から何番目かを返してくれている, 配列側では、「apple」が配列の要素として0番目から何番目に位置しているかを返してくれています。, 残念ながらindexOfメソッドでは複数の要素を一度に検索することができません。文字列内に複数の要素が含まれているかどうかを判定するにはmatchを使います。, matchメソッドで正規表現を使用することによって複数の要素で存在しているかの検索をすることができます。, ただ、indexOfと違って、どの位置に含まれているかまではわからないので、存在確認として使用する用途になります。, indexOfでは一次元配列での検索しかできないため、2次元配列以上ではfor文などを用いて一次元配列単位にしてあげる必要があります。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, 普段はデータエンジニアとして働いており、PythonやGASの情報を中心に発信しています。, ココナラで8basetechというユーザー開発の依頼を受けたりもしています。 サービス内容をみる, GASで文字列を切り出す関数(slice, substring, substr)について徹底解説. 2018.5.24 プログラムを学び始めると配列と呼ばれるものが出てきます。 配列まではわかったけど、多次元配列になると苦手意識を持っている方や、使用の用途がよくイメージできない方などもいらっしゃる方もいるかもしれません。本記事では実際にプログラムを追いながら、配列の検索方法や特徴を見ていきます。 実際にプログラムを開発する場合、配列を目にすることはたくさんあります。 是非一読して頂き理解を深めてください。, ご存じの方も多いかもしれませんが、簡単に説明しておくと、配列とは変数の集合体と考えることができます。 その変数は値を入れておく箱と考えることができますが、この箱が複数横並びにくっついているイメージです。 それぞれの箱は別もので、任意に箱の中身を取得したい場合は、番号を指定してあげます。この番号のことを「添え字」や「インデックス」と呼びます。また箱の中身を「要素」と呼びます。 上記で挙げた基本的な配列以外に「二次元配列」と呼ばれるものや、「連想配列」と呼ばれるものがあります。「二次元配列」や「連想配列」はより複雑なデータ構造で要素を保持しますので、基本的な配列とは検索の仕方も異なってきます。本記事では、基本的な配列、二次元配列、連想配列を順番に実際にコードを打ちながら説明していきます。基本的な配列に関しては十分わかっている方は、二次元配列や連想配列から読んでみてください。, ではさっそく配列検索してみましょう。 その前にGASでスクリプトを用意しましょう。 手順は以下になります。, 2.左上の「新規」から「その他」を押下。 3.「Google Apps Script」を選択します。 4.新規のプロジェクトが表示されます。, この波括弧の中にプログラムを書いていきます。 配列を宣言する場合は、以下のように宣言します。, [コード] function myFunction() { var array = [“test1”, “test2”, “test3”]; Logger.log(array); }, [ログ] [20-10-06 19:40:40:511 PDT] [test1, test2, test3], arrayの中に値が入っているのがわかります。 では、array配列の中を検索していきましょう。 今回はtest2を取得していきます。 以下のように記述します。, [コード] function myFunction() { var array = [“test1”, “test2”, “test3”]; Logger.log(array[1]); }, 無事test2が取得されています。 この時注意して欲しいのが、添字です。 「配列とは」で説明したように、配列を検索する時は、必ず添字を指定してあげる必要があります。 添え字の最初の番号は1ではなく0になります。 従ってtest1, test2, test3からtest2を指定する場合は、1となります。 検索からやや脱線しますが、ついでに配列の操作についても触れておきます。, Shiftメソッドを使うと、配列の最初の要素を取得することができます。 取得した際に配列内から消えてしまいすので、削除したい場合にも使えます。, [コード] function myFunction() { var array = [“test1”, “test2”, “test3”]; var element = array.shift(); Logger.log(element); }, Popメソッドは逆に配列の最後を取得することができます。 取得した際に配列内から消えてしまいすので、削除したい場合にも使えます。, [コード] function myFunction() { var array = [“test1”, “test2”, “test3”]; var element = array.pop(); Logger.log(element); }, Lengthプロパティを使うと配列の要素数が取得できます。 Lengthプロパティは配列の添え字にプラス1した数を返します。 ですので、ここでは3が返されます。, [コード] function myFunction() { var array = [“test1”, “test2”, “test3”]; var element = array.length; Logger.log(element); }, 最後にfor文を使った検索方法を紹介します。 今回は配列の要素数のすべてを取得するパターンとしますが、for文内に条件などを追加することによって、様々な操作が可能となります。 良く使いますので、是非覚えておくと良いでしょう。. 2020/9/29 大まかな流れ 検索対象オブジェクト(文字列 or 配列).indexOf(検索したい要素, 検索開始位置), indexOfの使い方は、対象オブジェクト.indexOf(検索したい要素, 検索開始位置). 2018.5.21 Copyright © 2015-2020 いつも隣にITのお仕事 All Rights Reserved. Follow @kiyotatsu_tw !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)? GAS IT/web, Google app script(GAS)の配列の基本的な使い方を備忘録的にまとめます。. はじめに. 前回、オブジェクトについて説明させて頂きました。 オブジェクト・プロパティ・メソッド Follow @kiyotatsu_tw !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)? 基本的な配列から、二次元配列、連想配列まで、プログラムを目で追いながら、配列の検索の仕方や特徴を理解していく。配列に苦手意識のある人やより広く深く理解したい方を対象とした記事である。 Googleスプレッドシートの操作を中心にGAS(GoogleAppsScript)の基本コードを紹介しています。初心者の方が順番に読んでくだけでGASの基礎コードが理解出来るようになれ続きを読む, クラスについて Calendarサービス これまで例として使用してきたスプレッドシートはコチラです。 それで、Gmailからメッセージを取得してきたときに、それに含まれる名前、年齢とそのメッセージIDを記録するのですが、同じメッセージを重複してデータ追加しないようにしたいのです。 そのために、既に現在対象としているメッセージIDが、既にスプレッドシートに記載されているかどうかを判定する必要があります。 そしてその判定処理をするために、メッ … 'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); KIYOTATSU(キヨタツ)を運営しているウェブ制作者のYoshiです。得意な分野はディレクションとコーディングです。デザインはシンプルなものだけ可能です。他、色々と随時習得中です。. Googleスプレッドシートの操作を中心にGAS(GoogleAppsScript)の基本コードを紹介しています。初心者の方が順番に読んでくだけでGASの基礎コード続きを読む, Googleカレンダーを操作するCalendarサービス var arr_test_sub2=["d","e","f"]; arr_test_main = [arr_test_sub1,arr_test_sub2]; var arr_test = [a,b,c]; GASには、Googleサー続きを読む, オブジェクト・プロパティ・メソッド 表題の通りですが、GASでスプレッドシートを操作する基本的な流れと方法について紹介したいと思います! 基本的な配列から、二次元配列、連想配列まで、プログラムを目で追いながら、配列の検索の仕方や特徴を理解していく。配列に苦手意識のある人やより広く深く理解したい方を対象とした記事である。 これまで、GASでスプレッドシートを操作するための、SpreadsheetAppクラスとその配下のSpreadsheetクラスそしてSheetクラスについて続きを読む, 本業は求人広告営業ですが、効果データ解析・スクレイピングでの営業リスト作成・業務改善ツール作成などpython・Excel・VBA・スプレッドシート・GAS使いまくりで活動してます!今まさに使ってるスキルを発信します(^_^) 簡単なHPやWEBアプリもつくります!. Google Apps Scriptで正規表現を使って必要な情報を抽出する最も簡単なスクリプト, Google Apps Scriptで正規表現でマッチした文字列から不要な部分を削除する, Google Apps ScriptでGmailの受信メールから正規表現でデータを抽出する, Google Apps Scriptでメールから正規表現で抽出したデータをスプレッドシートに蓄積する方法, Google Apps Scriptでスプレッドシートの列データを配列として取得する方法, GASでフォーム送信メールからデータを取得してスプレッドシートに蓄積するツールの完全版, 詳解! Calandarサービスは、GASでGoogleカレンダーを操作するときに使うクラスとメンバーがまとめ続きを読む, GASでスプレッドシートを操作する Logger.log(arr_test[0]); //aが出力, var arr_test = [[a,b,c],[d,e,f]]; セルの範囲を配列で取得するスプレッドシートでセル範囲を操作するとき、配列で取得してメモリ上で処理をするとスプレッドシートへのアクセス回数を減らすことができ、プログラムの実行時間を短くすることが出来ます。更には配列で処理することにより、複雑な ↑これの出力結果がこれ↓ ↓ 整形してみるとこんな感じ。data という配列に11個の要素が入ってます。. GAS記事の始めのところで、プログラ続きを読む, 配列 初心者でも絶対にわかる丁寧な解説!記事を順番に読んでくだけでパソコンスキルがメキメキ上がる!, 2020/9/29 オブジェクトはプ続きを読む, GASでセルの値を取得する 一つの要素に注目 ↓ data 配列の1つの要素に注目してみます。 つまり、data 配列の1つの要素には スプレッドシートの1行分のデータが、A列から順番に配列として格納されている です。 最近、Google app script(GAS)を使って、スプレッドシートのあるシートに記載されたデータ(情報)を配列取得して、それを他のシートにfor文で書き出すというマクロの作成をしたので、備忘録でメモしておこうと思います。 まず、スプレッドシート取得とシート選択。 var arr_test_sub1=["a","b","c"]; Google app script(GAS)の配列の基本的な使い方を備忘録的にまとめます。 GAS 配列の基本知識 宣言 GASで配列を宣言する時は、下記の二通り。 【1】 var arr_test = new Array(); 【2】 var arr_test = []; 二次元配列の作り方 二次元配列にする時は、 クラス 配列の length プロパティを参照すると、配列の最後のインデックス に 1 を加え値を取得することができます。この値は通常配列に含まれる要素の数となります(違う場合についても解説します)。ここでは JavaScript で配列の要素の数を取得する方法について解説します。 Logger.log(arr_test[0][1]); //bが出力, 色んな記事で紹介されていますので、あれこれと読んでみると、さらに理解が深まります。, ▼第21回.配列って何なんだ? Google Apps Script(以下GAS)上で配列、連想配列を扱う際の記述方法について纏めてみます。・・・と言ってもGAS自体がJavaScriptベースなので、「JavaScriptにおける書き方」でも意味は同じだと思い … photo credit: NASA Johnson iss046e008733 via photopin (license), Google Apps Scriptでフォーム送信メールからデータを取得してスプレッドシートにまとめるツールを作成しています。, Gmailから取得したメッセージIDをスプレッドシートに書き出す処理を使いました。, さて、なぜメッセージIDを取得したかというと、スクリプトを複数回実行したときに、同じメッセージから重複してデータを取得しないように…という目的がありました。, ですから、「同じメッセージIDが存在しなければ、そのメッセージのデータを書き出す」という分岐処理が必要になってきます。, で、その前準備として、メッセージIDが格納されている列データを配列として取得します。, スクリプトを高速にするために配列として取得した上で、上記分岐判定をしていくためです。, ということで、Google Apps Scriptでスプレッドシートの列データを配列として取得する方法についてお伝えします。, それで、Gmailからメッセージを取得してきたときに、それに含まれる名前、年齢とそのメッセージIDを記録するのですが、同じメッセージを重複してデータ追加しないようにしたいのです。, そのために、既に現在対象としているメッセージIDが、既にスプレッドシートに記載されているかどうかを判定する必要があります。, そしてその判定処理をするために、メッセージIDのデータをいったん配列として取り込む、というのが今回のお題です。, スプレッドシートで検索対象となるのは、C列ですから、C列の見出しを除くデータを配列として取り込みましょう。, getRangeメソッドは当ブログでも何度か紹介していますが、以下の記述をすることで、特定の行番号、列番号のセルを基準にして、そこから指定した行数、列数のセル範囲を取得します。, 行数、列数は省略することができ、省略した場合はそれぞれ1行、1列を指定したことと同様になります。, 例えば、前述のシートであれば、以下のような命令にすれば、C列の見出しを除くセル範囲が取得ができます。, 行番号2、列番号3のセルつまり「C2」セルから2行、1列分(省略時は1列になりますからね)のセル範囲の取得ということです。, そこで、getLastRowメソッドを使って、シート上にデータのある最終行の行番号を取得するようにします。, これを使うと、先ほどのgetRangeメソッドの表現は以下のように書き換えることができます。, ただ、見出し行を除きたいので、マイナス1をして、結果として2が行数の指定となるべき、ということです。, こうして取得した列データですが、getValuesメソッドを使えば、そのセル範囲内の値を配列として取得することができます。, 以上、Google Apps Scriptでスプレッドシートの列データを配列として取得する方法をお伝えしました。, この二次元配列に特定のメッセージIDが含まれているかどうかを知る方法…次回お伝えしていきます。, ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。, Google Apps Scriptでフォーム送信メールからデータを取得してスプレッドシートに蓄積していくツールを作っています。今回は、GmailメッセージのメッセージIDを取得する方法です。, Google Apps Scriptのスプレッドシート読み書きを格段に高速化をする方法, Google Apps Scriptでスプレッドシートの操作をしていて実行速度が遅い!と感じたことがあると思います。今回はスプレッドシートを操作する場合に処理速度を格段に速くする方法をお伝えします。, Google Apps Scriptでフォーム送信メールからデータを抽出してスプレッドシートに登録するツールを作成しております。今回はGASで二次元配列に特定の要素があるかを判定する方法をお伝えします。, Google Apps ScriptでTrelloをAPIで操作する方法を解説します。今回は認証に必要なkeyとtokenを取得する方法と、取得したkeyとtokenをつかってボードIDを取得する方法をお伝えします。, GASでクライアント側にもJavaScriptを使用してWebアプリを作成する方法をシリーズでお伝えしています。今回は、GASでクライアントJavaScriptを使用する超簡単なプログラムについて紹介します。, 日報メール書いてらっしゃいますか?毎日のことですから、自動である程度の文面を含めて作成できたら便利ですよね。今回はGASでGmailを操作して、日々の日報メールの下書きを自動で作るスクリプトを紹介します。, GASによるマネーフォワードクラウド請求書APIの操作についてできる限りていねいに紹介をするシリーズです。今回は、GASでマネーフォワードクラウド請求書APIへの認証とアクセストークンの取得を行う方法をお伝えします。, Google Apps ScriptでBotを作りながらその基本を学ぶシリーズです。今回は、関数から別の関数を呼び出す方法です。functionの書き方、引数、仮引数、戻り値などについても解説します。, 「初心者でもわかるGoogle Apps Scriptのクラス」をテーマにシリーズ連載をお送りしております。今回は、GASでスプレッドシートの表をインスタンス配列化する方法をおお送りします。, 「ノンプログラマーのためのスキルアップ研究会」で12/16にもくもく会を開催します #ノンプロ研, 当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。, マネーフォワードクラウド請求書の請求書一覧の全件をスプレッドシートに書き出すスクリプト, GASでマネーフォワードクラウド請求書の請求書一覧をスプレッドシートに書き出す方法.