私は JavaScript に比較的慣れていないので、ご容赦ください。
名前付き範囲を介して隣接する2つのセルに座っている人の机の番号と名前をラベル付けするGoogleスプレッドシートに座席表があります。コードですべての名前付き範囲をループして、デスク番号と人の値を取得し、それを 2 つの列 (1 つの列にデスク番号、別の列にユーザー名) の新しいシートに吐き出します。私が抱えている主な問題は、一部のデスク番号/ユーザー範囲が垂直 (例:desk_1 = Sheet1!F6:F7、F6 はデスク番号、F7 はユーザー) であり、一部の範囲は水平 (例:desk_2 = Sheet1! G2:H2 (G2 はユーザー、H2 はデスク番号) であるため、複数の方向から検索する方法がわかりません。これは私のコードの一部ですが、現在は機能していません。どんなアドバイスでも大歓迎です!!
enter code here
function findSeats() {
var sheet = SpreadsheetApp.getActiveSheet();
var wbk = SpreadsheetApp.getActiveSpreadsheet();
var rng_convention = "desk_";
var desk_name = rng_convention;
var users = new Array();
for ( var i = 0; i <= 1000; i++) {
desk_name = rng_convention;
desk_name = desk_name + i;
var rng = wbk.getRangeByName(desk_name);
if( !rng ) {
continue; }
else {
var vals = rng.getValues();
var k = 0;
if(vals.length == 1) {
//look left right horizontally for user
if(vals[0][0] == i) {
// create a user for this named range.
var user = new Object();
user.name = vals[0][1];
user.position = vals[0][0];
users[k] = user;
k++;
}
else {
//look right left horizontally for user
if (vals [0][1] == i){
// create the user for this named range.
var user = new Object();
user.name = vals[0][0];
user.position = vals[0][1];
users[k] = user;
k++;
}
}
}
/* else {
/* something is wrong, I need to look up-down, and then down up for users */
}
}
return users;
};