0

Önceden tanımlanmış bir aralıkta iki google sayfalarını (çift değerler için) karşılaştırmaya çalışıyorum ..Google E-Tablolar'da bir aralığı özel işlevlere nasıl geçirebilirim?

Google'ın sayfaları kullanarak araçları karşılaştırmanıza izin verdiğinin farkındayım, ancak bu nedenle daha özelleştirilmiş bir karşılaştırmaya ihtiyacım var.

Ben aralığında götüren bir işlevi ... gibi bir şey yaratmak istiyorum:

function myFunction(range) { 
    var firstColumn = range.getColumn(); 
    // loop over the range 
    } 

sorun bunu yaparken deneyin zaman, parametre yalnızca değerleri geçiyor gibi görünüyor olmasıdır işlevi. Böylece, getColumn() gibi Range yöntemlerinden hiçbirini kullanamıyorum.

error: TypeError: Cannot find function getColumn in object 1,2,3. 

nasıl özel işlevler birine sadece değerler yerine gerçek bir yelpazede gönderebilirsiniz: bunu yapmaya çalıştığınızda, aşağıdaki hata veriyor? Not: Benim durumumdaki aralık tüm sayfadır (her ikisi de karşılaştırılması gereken).

Teşekkürler!

cevap

0

Özel işlev bağımsız değişkenleri, özel işlev koduna geçirilmeden önce hesaplanır; bu nedenle range, tek bir değer veya bir değer dizisi olacaktır.

Sen, bir dize, yani =myFunction("Sheet!A:Z") gibi bir aralığa başvuruyu geçmesi sonra aşağıdaki gibi bir şey kullanabilirsiniz

: daha iyi bir seçim olabilir adlandırılmış aralıkları ve referanslarla hem getRangeByName çalışması os:

 
function myFunction(reference) { 
    var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(reference); 
    var firstColumn = range.getColumn(); 
    // do something 
} 

Not getRange'den.

0

Google Komut Dosyası, Aralıkları Arrays olarak değerlendirir. Yani, bir dizi ile çalışırken girilen aralıklarla daha iyi çalışabilirsiniz. İşte bir dizide nasıl döngü yapılacağı iyi bir teknik: https://stackoverflow.com/a/14991272/5372400