Google Apps Scriptを使用してGoogleシートのデータで最後の行をクエリし、空のセルを「未回答」に設定したいと思います。
私はそれを1つのセルで動作させ、もちろん必要に応じて他の10にこれを適用することもできましたが、より効率的であるため、それらをループしたいと思います。
これが機能する私の単一セルコードです。
function SetValues() {
var ss = SpreadsheetApp.getActiveSheet();
var lastRow = ss.getLastRow();
var certVal = ss.getRange(lastRow,5,1).getValues();
if (certVal == ''){
ss.getRange(lastRow,5,1).setValue("Not Answered");
}
Logger.log(certVal)
}
function checkLastRow() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn());//Get last row and only that row.
var values = range.getValues()[0];//Get the defined ranges values
Logger.log(values)
for (var i in values) {//Loop through each value
Logger.log(values[i])
if (values[i] == "") {//Check to see if that value is blank.
values[i] = "Not Answered";
}
}//Outside the loop so it has finished and is holding all the changed values.
range.setValues([values]);//Write all the values back to the sheet with changes.
}
.getRange()にはいくつかのパラメーターオプションがありますが、ここでは非常に動的なものを使用しています。(開始する行、開始する列、取得する行数、取得する列数)これは、必要な範囲のみを定義します。
.getValues()は、定義された範囲の実際の値を返します。1つの行またはデータしか取得していないため、最後に[0]を使用して、セルの配列を取得します。ロガーはこれを表示します。.getValues()のみを使用する場合は、この[[cell1]、[cell2]]が必要です。[0]を使用すると、セル値[cell1]、[cell2]のみが返されるため、個別に繰り返すことができます。
forループは基本的に読み取りです。
for (var i = 0; and i is <= values.length//the number of cells returned with getValues..; i++//everytime the loop gets to the end increase i by 1) {
perform action during loop on current object.(values[i])
}
上に書かれている方法は速記です。for(var i in values){}。
forループを使用すると、その行全体から返される各セルを個別に確認できます。したがって、ループしてiが1増えるたびに、次のセルの値を調べます。ですから、こんな感じです。私は毎回変わることを覚えておいてください、しかしそれは整数です。
Loop 1(values[0] = cell1)
Loop 2(values[1] = cell2)
Lopp 3(values[2] = cell3)
したがって、「ifステートメントを使用して値をテストする」とすると、常にtrueまたはfalseに見えます。
if (values[i] == "")// if current cell is equal to blank then
{do something here if true}
次のステップは理解しにくい場合がありますが、スクリプトには値があるため、必要なオブジェクトを定義し、=を使用して変更することで、その場で値を変更できます。したがって、上記では、スクリプトが現在のセルにあることがわかり、ifステートメント内にあるため、元の値が空白の場合にのみ実行されます。つまり、単に「未回答」に変更されます
変数「range」は、すでに必要な領域を定義しているので、もう一度呼び出し、setValues()を使用して、変更が加えられたすべての値を返します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加