Şimdiye kadar bulduğum en iyi geçici çözüm:
worksheet_name!$A$1:$YY
ama ideal olarak basitçe yazabilmek istiyorum, örneğin:
worksheet_name!
Peki, kimse biliyor mu: bir bütün sayfayı aralık olarak belirtmek için bir sözdizimi var mı?
Şimdiye kadar bulduğum en iyi geçici çözüm:
worksheet_name!$A$1:$YY
ama ideal olarak basitçe yazabilmek istiyorum, örneğin:
worksheet_name!
Peki, kimse biliyor mu: bir bütün sayfayı aralık olarak belirtmek için bir sözdizimi var mı?
Yanıtlar:
İşi sizin için yapmak için küçük bir Google Apps Komut Dosyası (GAS) pasajı oluşturdum.
function sheetRange(targetName,int) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var asName = ss.getActiveSheet().getSheetName();
var tgSheet = ss.getSheetByName(targetName);
var output;
if(targetName == asName) {
output = "Error: target sheet is active sheet !!";
} else {
switch(int) {
case 1:
output = tgSheet.getDataRange().getValues();
break;
case 2:
output = tgSheet.getSheetValues(1, 1, tgSheet.getMaxRows(),
tgSheet.getMaxColumns());
break;
default:
output = "Choose int to be 1 or 2 !!";
}
}
return output;
}
Elektronik tablo menüsünde, Araçlar> Komut Dosyası düzenleyici'yi seçin ve kodu ekleyin. Hata düğmesine bastığınızdan emin olun:

=sheetRange("sheetName",int)
intSeçeneği açıklamalar bölümünde açıklandığı gibi kullanın .
Size bir örnek dosya yarattım: Range olarak Sheet
Bu durumda, bir e-tablodaki bir aralığı GAS aracılığıyla belirlemenin iki yolu vardır:
int=1; Via getDataRangeyöntemle. Bu, son sütunun içinde veri bulunan sütun olduğu bir aralık alır. Aynı satır sayısı için hesaplar. Bu genellikle en basit yoldur. Örnek dosyadaki ikinci sayfaya bakınız.int=2; Via getSheetValuesyöntemle. Bu bir "WYSIWYG" aralığı alacaktır. Örnek dosyadaki üçüncü sayfaya bakınız.Google Sayfaların, tüm sayfa aralığı için bir aralık sözdizimi yok.
Aşağıdaki formül Sayfa1 adındaki tüm sayfanın aralık adresini döndürür
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Referans olarak kullanmak için, INDIRECT'in içine koyun. Aşağıdaki formül Sayfa1'deki tüm değerlerin bir dizisini döndürecektir.
= ARRAYFORMULA (
DOLAYLI(
"Sayfa1!"
Ve ADRES (1,1,, TRUE)
& ":"
& ADRESİ (ROWS (Sayfa1 A:! A) KOLONLAR (Sayfa1 1:! 1) ,, DOĞRU)
,
DOĞRU
)
)
Belirli bir tane bilmiyorum, ancak satır / sütun sayısını bilmiyorsanız bazı formüller kullanabileceğinizi düşünüyorum:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
İşte, Sheetsayfa adınız ve @rastgele bir dizedir. Seçtiğiniz sayfa @bir hücrede ise, çalışmaz. Sayfa böyle bir hücre içeriyorsa, onu başka bir karakterle değiştirebilirsiniz.
COUNITFBurada A sütununda satır sayısını sayar A içermeyen @bunu içeren bir hücre olup eğer tüm olması gereken ve INDIRECTdönüşümler Sheet!1:###(burada ###gerçek bir seçilen bir aralığı içine satır sayısı).
Appscript içinde çalışanlar için en iyi cevaplar zaten verildi, ancak dışarıdaki herhangi biri Google E-Tablolar içinde düzgün çalışıyorsa, işte gereksinimlerinize uyan bir yaklaşım:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Açıklama : * Esas olarak, çalışma sayfasındaki_adı satır sayısıyla birleştirilmiş bir dize aracılığıyla aralığı belirtiyorsunuz !
Bu yaklaşımın bazı avantajları : * 'Dinamik' ... tabana satır eklerseniz, aralık buna göre ayarlanacak * Hafif - bunu bir importrange / query işlevine tokatlayabilirsiniz.
Dezavantajları : * Her durumda hiç denemedim, bu yüzden sadece belirli kullanım durumlarında işe yarayabilir * Kişisel olarak işleri dinamik / temiz yapma tercihim var, bu yüzden türlerin özel bir işlevi, uygulama ile bu hafif yaklaşım arasında iyi bir orta yol olacaktır.
Bu benim için çalışıyor:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Sınırlı bir komut dosyasında kullanılırsa, sayfa adını "!" İle birleştirin ve ardından seçilen sayfada veri aralığının A1 notasyonunu alın.
Sayfanın tamamını aralık olarak belirtmek için lütfen aşağıdakileri kullanın:
worksheet_name!A1:ZZ
Burada deneyebilirsiniz: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
veya Java kullanıyorsanız (Sayfa1'deki her şeyi silmek için):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
ya da sadece başka bir sayfada (örneğin: Sayfa2) bir formülde kullanmak istiyorsanız (örneğin: TOPLA) aşağıdaki referansı kullanabilirsiniz:
=SUM(Sheet1!A1:ZZ)
Bu Sayfa1 mevcut tüm hücreleri toplamak ve Sayfa2 bir hücredeki değeri koyacağız ^, buradan örnek bulabilirsiniz https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . Bu örnekte Sayfa1'de 3 sütun ve 5 satır var, bu nedenle bu formül = SUM (Sayfa1! A1: ZZ) hepsini seçer. Sayfa1'de satır veya sütun ekleyebilirsiniz; bu çözüm hala tüm hücreleri seçecektir.
Not: Aşağıya cevabımı oyla - lütfen nedenini açıkla
Satır sayısını bildiğinizi varsayarak, sayfanın tamamını "çalışma sayfası_adı" olarak adlandırabilirsiniz:
ADIMLAR:
Şimdi bir fonksiyonda "çalışma sayfası_adı" nı her kullandığınızda, çalışma sayfasının tamamına referans olacaktır.