私がこれまでに見つけた最良の回避策は次のとおりです。
worksheet_name!$A$1:$YY
しかし、理想的には、単に書くことができるようにしたいと思います、例えば:
worksheet_name!
だから、誰もが知っていますか?シート全体を範囲として指定するための構文はありますか?
作業を行うために、小さなGoogle Apps Script(GAS)スニペットを作成しました。
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;
}
スプレッドシートメニューで、[ツール]> [スクリプトエディター]を選択し、コードを追加します。必ずバグボタンを押してください。
=sheetRange("sheetName",int)
備考で説明されているように、int
オプションを使用します。
サンプルファイルを作成しました:範囲としてシート
この場合、GASを介してスプレッドシートの範囲を決定する方法は2つあります。
int=1
; getDataRange
メソッド経由。これにより、最後の列がデータを含む列である範囲が取得されます。行数についても同じことが言えます。これは通常、最も簡単なルートです。サンプルファイルの2番目のシートを参照してください。int=2
; getSheetValues
メソッド経由。これにより、「WYSIWYG」範囲が取得されます。サンプルファイルの3番目のシートを参照してください。Googleスプレッドシートには、シート範囲全体の範囲構文がありません。
次の式は、Sheet1という名前のシート全体の範囲アドレスを返します
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
参照として使用するには、INDIRECT内に配置します。次の数式は、Sheet1のすべての値の配列を返します。
= ArrayFormula( INDIRECT( "Sheet1!" &ADDRESS(1,1、、TRUE) & ":" &ADDRESS(ROWS(Sheet1!A:A)、COLUMNS(Sheet1!1:1), TRUE) 、 TRUE ) )
シート全体を範囲として指定するには、次を使用してください:
worksheet_name!A1:ZZ
ここで試すことができます: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
またはJavaを使用する場合(Sheet1のすべてをクリアするため):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
または、別のシート(例:Sheet2)の数式(例:SUM)で使用する場合は、次の参照を使用できます。
=SUM(Sheet1!A1:ZZ)
^これにより、Sheet1のすべての既存のセルが合計され、Sheet2のセルに値が入力されます。例は次のとおりです。 https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q -xFvkVr7yKw6WQfHklbohL1NM/edit?usp = sharing 。この例では、Sheet1に3列と5行があるので、この式= SUM(Sheet1!A1:ZZ)はすべてを選択します。 Sheet1に行または列を追加しても、このソリューションはすべてのセルを選択します。
追伸:あなたが私の答えに反対票を投じた場合-理由を説明してください。
これは私のために働く:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
バインドされたスクリプトで使用し、シート名と「!」を組み合わせますそして、選択したシートのデータ範囲のA1表記を取得します
Appscript内で操作している人には既に最良の回答が与えられていますが、Googleスプレッドシート内で適切に作業している人がいる場合は、ニーズに合ったアプローチを以下に示します。
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
説明:*基本的に、worksheet_name!の行数と連結された文字列を介して範囲を指定しています。
このアプローチのいくつかの利点:*「動的」です...行を下部に追加すると、それに応じて範囲が調整されます*軽量-これをimportrange/query関数に平手打ちできます
短所:*すべてのケースで試していないので、特定のユースケースでのみ動作する可能性がありますappscriptとこの軽量アプローチの間
特定のものはわかりませんが、行/列の数がわからない場合は、いくつかの式を使用できると思います。
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
ここで、Sheet
はシート名であり、@
は任意の文字列です。選択しているシートの1つのセルに@
がある場合、機能しません。シートにそのようなセルが含まれている場合は、別の文字に置き換えることができます。
ここのCOUNITF
は、列A:Aに@
を含まない行の数をカウントします。これは、セルを含まない場合はすべてである必要があり、INDIRECT
はSheet!1:###
(ここで、###
は行数であり、実際の選択範囲になります。
感嘆符のない範囲をシートとして指定することで、シート全体を選択できました。
Dataという名前のタブがありました。データを使用する代わりに!またはdata!A1:ZZ。