前提・実現したいこと
スプレッドシートのシート1を読み込んで、★条件に合致すれば、
シート1のR列と同じ名前を、シート2のA列から探し出し、
同じ行のIDを出力するというプログラムを作成しています。
★の条件式はあっているので、
以下部分のプログラムが間違っています。
===
シート1のR列と同じ名前を、シート2のA列から探し出し、
同じ行のIDを出力する
===
今回実施しているシート1と、シート2は以下内容になり、
条件に合致するのが、シート1の20行目のため、
シート2の「田中」のID「1000001」を出力したいのですが、上手くできません。
エラー内容は、以下になっているのですが、どこを直せばよいか分かる方教えていただけますでしょうか?
よろしくお願いします。
発生している問題・エラーメッセージ
以下のエラーメッセージが出て、正しく実装されません。
【エラー内容】
TypeError: Cannot read property '0' of undefined
test1 @ コード.gs:44
44行目は、コード内の以下部分になります。
//シート2の、A列を定義
var questioner2 = table2[i-2][0];
該当のソースコード
function test1() {
//アクティブなスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
//シート1を取得
var sh = ss.getSheetByName("シート1");
//シート2を取得
var sh2 = ss.getSheetByName("シート2");
//シート1の最終行を定義
var lastRow = sh.getLastRow();
//シート2の最終行を定義
var lastRow2 = sh2.getLastRow();
//スプレッドシート1の、O2~R最終行の値をgetValuesで取得
var table = sh.getRange(2,15,lastRow,4).getValues();
//スプレッドシート2の、A2~B最終行の値をgetValuesで取得
var table2 = sh.getRange(2,1,lastRow2,2).getValues();
//実行日時
var today = new Date();
//2行目~14行目までを読み込み
for(var i=2; i<=lastRow; i++)
{
//シート1の、O列を定義
var anser = table[i-2][0];
//シート1の、P列を定義
var send = table[i-2][1];
//シート1の、Q列を定義
var cell = table[i-2][2];
//シート1の、R列を定義
var questioner = table[i-2][3];
//シート2の、A列を定義
var questioner2 = table2[i-2][0];
//シート2の、B列を定義
var id = table2[i-2][1];
//シート1の、O列が空白ではない、かつ、シート1の、P列が「送信可能」と入力されている、かつ、シート1の、Q列が空白の場合
if(anser!=="" && send=="送信可能" && cell=="")
{
//シート1のR列の値を含むものを、シート列のA列から探す
if(questioner == questioner2)
{
var sendid = id;
}
//ログでanserの内容を出力(後で、チャットワークに出力に修正する)
Logger.log(anser);
Browser.msgBox(anser);
Browser.msgBox(sendid);
sh.getRange(i, 17).setValue(new Date());
}
}
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/29 13:51
退会済みユーザー
2021/08/29 14:07
2021/08/29 14:19