私は何を達成しようとしている:最初の行から開始して、スプレッドシート内のすべての行を取得します複数の行を1つずつ取得してその値を確認するにはどうすればよいですか?
- をし、最後の行
- で終了すると、その行の値
- は「 」に値を比較します
- その行の任意の値であれば==「」、その行を削除し、他の
- は、次の行に継続して
これは私がこれまで持っていたものです。私はスプレッドシートとその値のすべての行を取得できます。私は行を1つずつ取得し、次にその行の値をチェックした後に次の行に移動する方法がわかりません。
[16-10-19 01:28:52:863 EDT] Spreadsheet.deleteRow([3]) [0.06 seconds]
[16-10-19 01:28:52:914 EDT] Spreadsheet.deleteRow([4]) [0.051 seconds]
[16-10-19 01:28:52:967 EDT] Spreadsheet.deleteRow([7]) [0.053 seconds]
[16-10-19 01:28:52:989 EDT] Spreadsheet.deleteRow([9]) [0.021 seconds]
[16-10-19 01:28:52:992 EDT] Execution failed: Those rows are out of bounds.
コード:
var artistFile = SpreadsheetApp.openById(fileId); //open spreadsheet
var artistFileRows = artistFile.getActiveSheet().getMaxRows(); //get number of rows in spreadsheet
var startL = "A"; //start column
var endL = "F"; //end column
//get row one by one
for (var a = 0; a < artistFileRows; a++)
{
var range = startL + parseInt(a + 1) + ":" + endL + parseInt(a + 1); //range = A1:AX -- X == last row number in spreadsheet
//get rows values
var values = artistFile.getRange(range).getValues();
//compare rows values to ''
//delete rows with blank values
//move to next row and repeat
}
これは私
[16-10-14 20:50:34:622 EDT] row: 1, range: A1:F1
[16-10-14 20:50:34:646 EDT] [[header1, header2, header3, header4, header5, header6]]
[16-10-14 20:50:34:647 EDT] row: 2, range: A2:F2
[16-10-14 20:50:34:671 EDT] [[d2, td2, ca2, cr2, t2, ns2]]
[16-10-14 20:50:34:672 EDT] row: 3, range: A3:F3
[16-10-14 20:50:34:695 EDT] [[d3, td3, ca3, cr3, t3, ns3]]
[16-10-14 20:50:34:696 EDT] row: 4, range: A4:F4
[16-10-14 20:50:34:722 EDT] [[, , , , , ]]
[16-10-14 20:50:34:722 EDT] row: 5, range: A5:F5
[16-10-14 20:50:34:748 EDT] [[, , , , , ]]
[16-10-14 20:50:34:748 EDT] row: 6, range: A6:F6
[16-10-14 20:50:34:774 EDT] [[d4, td4, ca4, cr4, t4, ns4]]
[16-10-14 20:50:34:775 EDT] row: 7, range: A7:F7
[16-10-14 20:50:34:799 EDT] [[test1, test1, test1, test1, test1, test1]]
[16-10-14 20:50:34:799 EDT] row: 8, range: A8:F8
[16-10-14 20:50:34:825 EDT] [[, , , , , ]]
[16-10-14 20:50:34:825 EDT] row: 9, range: A9:F9
[16-10-14 20:50:34:849 EDT] [[test2, test2, test2, test2, test2, test2]]
[16-10-14 20:50:34:850 EDT] row: 10, range: A10:F10
[16-10-14 20:50:34:874 EDT] [[t, , t, , , ]]
[16-10-14 20:50:34:874 EDT] row: 11, range: A11:F11
[16-10-14 20:50:34:899 EDT] [[, , , , , ]]
編集
ログのログを提供します2
var count = 0;
var index = [];
for (var i = 0; i < allValues.length; i++)
{
for (var j = 0; j < allValues[i].length; j++)
{
Logger.log(allValues[i][j]);
if (allValues[i][j] === "")
{
index[count] = i;
count++;
break;
}
}
}
for (var i = 0; i < count; i++)
{
artistFile.deleteRow(index[i]);
}
編集私が間違っている行が削除される示す.deleteRow()
を修正しました。 forループはvar i = 0
で始まりますが、スプレッドシートの行は1行目から始まります。.deleteRow()
をに変更しました。
今は削除する必要が右の行を示しています
[16-10-19 01:40:01:353 EDT] Spreadsheet.deleteRow([4]) [0.053 seconds]
[16-10-19 01:40:01:406 EDT] Spreadsheet.deleteRow([5]) [0.052 seconds]
[16-10-19 01:40:01:461 EDT] Spreadsheet.deleteRow([8]) [0.054 seconds]
[16-10-19 01:40:01:484 EDT] Spreadsheet.deleteRow([10]) [0.023 seconds]
[16-10-19 01:40:01:488 EDT] Execution failed: Those rows are out of bounds.
そして、最後の行にエラーが.deleteRow([11])
を示すべきである前に。
しかし、私はまだエラーを取得しています - Execution failed: Those rows are out of bounds.
[?私はすべての空白行を取得する方法を(の可能性のある重複http://stackoverflow.com/questions/40027874/how-would-i-get-every-空白行) –
を削除すると、ループの最後の行から最後の行に逆戻りして行インデックスが移動しないようにします –