Googleシートのforループから正しい値を引き出す際に問題が発生しています。ここ は私のコードです: 注:この、元のシートを追跡し、私が最初にここに起こる持っている必要がありますどのような大きな機能Google Appsスクリプト - 条件に基づいて範囲からデータをプルするためにループを使用する
function sendEmails() {
var trackOriginSheet = SpreadsheetApp.getActiveSpreadsheet().getName();
var getMirSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Miranda");
//Set a new object to hold conditional data
var holdingData = new Object();
//Create function to get values from origin sheet
var returnedValues = function (trackOriginSheet) {
//Load dynamic variables into an object via returnedValues()
if (trackOriginSheet === getMirSheet) {
var startMirRow = 2; // First row of data to process
var numRowsMir = 506; // Number of rows to process
// Fetch the range of cells A2:Z506
var dataRangeMir = getMirSheet.getRange(startMirRow, 1, numRowsMir, 26);
// Fetch values for each cell in the Range.
var dataMir = dataRangeMir.getValues();
for (var k in dataMir) {
var secondRowMir = dataMir[k];
var intRefDescMir = secondRowMir[3];
var intAdminActionsMir = secondRowMir[4];
//Push returned data to holdingData Object
holdingData.selectedData = secondRowMir;
holdingData.refDesc = intRefDescMir;
holdingData.adminActions = intAdminActionsMir;
}
}
}
Here's a copy of the sheet I'm working on
からの抜粋です、そして、にオブジェクトを作成しますreturnedValues()関数から返されたデータを保持します。後で、このオブジェクトのプロパティを電子メール送信機能と呼ぶことにします。
問題は、選択したシートからデータを動的に取り出すことができるということです(この場合、「Miranda」シート)。つまり、ユーザーが列のIで「Yes」オプションを選択すると、 Mirandaシートでは、このスクリプトが最初に行う必要があるのは、forループの先頭にある変数の値を、ユーザが「はい」を選択した同じ行内のにプルすることです。次に、そのデータを後で呼び出すカスタムオブジェクトにプッシュします。
私はそれが間違っていることは明らかです。少なくとも、私のループには何か問題があります。私が何をした?すべてのその空白が実際のスクリプトエディタで行きました
for (var k = 0; k < dataMir.length; k++) {
var mirColI = dataMir[k][8];
var mirRefDesc = dataMir[k][2];
var mirAdminActions = dataMir[k][3];
var mirDates = dataMir[k][4];
if (mirColI === "Yes") {
var activeRowMir = mirColI.getActiveSelection.getRowIndex();
//Pull selected values from the active row when Yes is selected
var mirRefDescRange = getMirSheet.getRange(activeRowMir, mirRefDesc);
var mirRefDescValues = mirRefDescRange.getValues();
var mirAdminActionsRange = getMirSheet.getRange(activeRowMir, mirAdminActions);
var mirAdminActionsValues = mirAdminActionsRange.getValues();
var mirDatesRange = getMirSheet.getRange(activeRowMir, mirDates);
var mirDatesValues = mirAdminActionsRange.getValues();
var mirHoldingArray = [mirRefDescValues, mirAdminActionsValues, mirDatesValues];
//Push mirHoldingArray values to holdingData
holdingData.refDesc = mirHoldingArray[0];
holdingData.adminActions = mirHoldingArray[1];
holdingData.dates = mirHoldingArray[2];
}
}
配列内の行オブジェクトとしてmirData [k]が8行目のすべてのセルをフェッチしているため、文字列を探すためのforループを実行すると実際のセルがプルされます。今それは理にかなっています:)ありがとう!私は今朝これを試してみると – Jensen010
私はあなたがここで言っていることを実装する方法を理解していると思う(ループまで)私は上の編集でコードでトラックにいますか? – Jensen010
私はこれがうまくいくと信じていますが、私を修正することは自由です。また、私は少し下に変数をカットしたいと思いますが、今すぐ外れています – Jensen010