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で質問しましょう!
似たような質問が見つかりました
- JavaScript gasについて 1 2022/05/31 21:51
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
JSONデータを50音順でソートしたい
-
同じIDで定義した要素の配列を...
-
for文内での計算の仕方
-
JavaScriptでソートすることは...
-
javascriptにおける配列のコピー
-
undefinedを表示させない方法は...
-
javascriptに関する質問です。(...
-
Boolean型配列中のTrueの有無を...
-
ローカルにあるファイルを検索...
-
スマートフォンで動かない
-
ASP+アクセスでのSQLコメントに...
-
C#OpenCv V4にのエラーに関する...
-
functionから別のfunctionを実...
-
自動でリンクを実行する
-
Dreamweaverでランダム表示
-
DOM要素を削除しても、イベント...
-
responseTextについて
-
javaが全くわからないので教え...
-
idを使わずにonclickで自身の要...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
二次元配列を使って順位をだす...
-
undefinedを表示させない方法は...
-
javascriptで行を抽出したいです。
-
配列を作って総当たりで距離を...
-
JSONデータを50音順でソートしたい
-
javascript 変数名の連結をしたい
-
JavaScriptにおける[] とか :...
-
ソートで
-
多次元配列から最大値を1行また...
-
[Javascript]多次元配列の宣言...
-
JavaScriptで簡単なクイズを作...
-
配列からNULL以外のキーを取得...
-
句点“。”で区切り、“。”も含め...
-
大分類・中分類・小分類のvalue...
-
javascriptで2つのArrayの...
-
どうすればresponseText結果を...
-
1から20までの整数から、重複な...
おすすめ情報