
google apps scriptをスプレッドシートでマクロ代わりに使用しています。
スプレッドシートの内容全体を配列取り込みし、
for文で上のセルから検索文字列に合うものを別の配列に追加するスクリプトを書きたいのですが、
var sheet_values = sheet.getDataRange().getValues();
var arry = [];
var s = '検索文字列';
for( i = 0 ; i < lastRow ; i++){
var v = sheet_values[i][15]; //15は検索したい列です
if( v === s ) {
arry.push(i);
}
}
のように記述すると
「TypeError: undefined からプロパティ「15」を読み取れません。」
というエラーメッセージが出ます。
var clmn_values = sheet.getDataRange(1,16,lastRow,1).getValues();
var arry = [];
var s = '検索文字列';
for( i = 0 ; i < lastRow ; i++){
var v = clmn_values[i]; //15は検索したい列です
if( v === s ) {
arry.push(i);
}
}
以上のように検索列単体で取り込みしてfor文にする場合このエラーメッセージは出ないのですが、
列で取り込むものがかなり多くなってしまうのでできれば全体から検証したいです。
何卒お答えいただけますと幸いです。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは
google apps scriptは存じませんので、ご質問文を見た範囲での回答となっており、はずしているかも知れませんが・・・
>「TypeError: undefined からプロパティ「15」を読み取れません。」
とのことなので、 sheet_values[i]がundefinedかあるいは読み取れないなどと推測できます。
データを読み込んで解析するのに、いきなり「lastRow」や「15」を指定して読み出そうとなさっていますが、元データに空の行があったり、空のセルがある場合に、そもそも、どのような値が返されてくる仕様になっているのでしょうか?
通常で考えれば、(どこか他で決めている?)lastRowではなく、sheet_values.length等を用いてループするのが妥当ではないかと思いますが…
googleのリファレンスで見てみると、データサイズは当該配列のサイズを参照してループしていますし、個々のセルの値についても存在をチェックして処理を行うようにしているようです。
https://developers.google.com/apps-script/refere …
ご回答ありがとうございます!
ご回答いただいた通り、空のセルを参照した場合に返す値を設定していませんでした。
lastRowで記述していたことで、配列にない位置を指定してしまいこのエラーが出ていたようです。
lengthにして解決しました!ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
javascript初心者です
-
C#テキストボックスの文字を配...
-
Javascript の配列の削除 (初心者)
-
ASP+アクセスでのSQLコメントに...
-
HTTPSのとき":"が"%3A"ではなく...
-
C#で、ContextMenuStripに動的...
-
window.openでタイトル名の指定
-
javascriptで文字挿入でtoggle...
-
getElementByIdを使用したグロ...
-
毎週土曜日のみの日付を取得、...
-
javascript(jQuery)でセル内...
-
Ajaxでデータベース(PostgreSQL)
-
特定のclassを表示、非表示にする
-
&= ~0x0c; &= ~0x03; |=1;
-
ローカルにあるファイルを検索...
-
C#OpenCv V4にのエラーに関する...
-
bt_melter.jsをサイトの一部の...
-
○歳△ヶ月と×日を計算してくれる...
-
引数付きコンストラクタでコン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
undefinedを表示させない方法は...
-
雪を降らせるみたいな、ゆらゆ...
-
JavaScriptで簡単なクイズを作...
-
1から20までの整数から、重複な...
-
javascriptで行を抽出したいです。
-
Perlの配列をJavaScriptに渡せ...
-
javascript 変数名の連結をしたい
-
jQueryで文字数カウンタ(複数...
-
配列データの利用方法
-
時計を複数表示する場合
-
("Scripting.Dictionary")につ...
-
順列生成アルゴリズムについて...
-
配列の数ではなく、文字列の長...
-
JSONデータを50音順でソートしたい
-
JavaScriptにおける[] とか :...
-
総当りの配列を返す関数の作成
-
java keyを配列で表記したい
おすすめ情報