Bağlı sayfalar, BigQuery ve Looker verilerini doğrudan E-Tablolar'da analiz etmenize olanak tanıyan bir Google E-Tablolar özelliğidir. Bağlı sayfalara E-Tablolar hizmetiyle programatik olarak erişebilirsiniz.
Bağlı sayfalarda sık kullanılan işlemler
BigQuery veya Looker'a bağlanmak ve verileri analiz etmek için DataSource
sınıflarını ve nesnelerini kullanın.
Aşağıdaki tabloda, en yaygın DataSource
işlemleri ve bunların Apps Script'te nasıl oluşturulacağı listelenmiştir:
İşlem | Google Apps Komut Dosyası sınıfı | Kullanılacak yöntem |
---|---|---|
Bir sayfayı desteklenen bir veri kaynağına bağlama | DataSourceSpec |
SpreadsheetApp.newDataSourceSpec() |
Bir veri kaynağı seçin | DataSource |
Spreadsheet.insertDataSourceSheet().getDataSource() |
Veri kaynağı sayfası ekleme | DataSourceSheet |
Spreadsheet.insertDataSourceSheet() |
Pivot tablo ekleme | DataSourcePivotTable |
Range.insertDataSourcePivotTable() |
Ayıklama işlemine veri alma | DataSourceTable |
Range.insertDataSourceTable() |
Formül kullanma | DataSourceFormula |
Range.setFormula() |
Grafik ekleyin | DataSourceChart |
Sheet.insertDataSourceChart() |
Gerekli yetkilendirme kapsamlarını ekleme
BigQuery verilerine erişmek için Google Apps Script kodunuza enableBigQueryExecution()
yöntemini eklemeniz gerekir. Bu yöntem, gerekli bigquery.readonly
OAuth kapsamını Google Apps Komut Dosyası projenize ekler.
Aşağıdaki örnekte, bir işlev içinde çağrılan SpreadsheetApp.enableBigQueryExecution()
yöntemi gösterilmektedir:
function addDataSource() { SpreadsheetApp.enableBigQueryExecution(); var spreadsheet = SpreadsheetApp.getActive(); }
Looker verilerine erişmek için Google Apps Komut Dosyası kodunuza enableLookerExecution()
yöntemini eklemeniz gerekir. Apps Script'te Looker'a erişmek, Looker ile mevcut Google Hesabı bağlantınızı yeniden kullanır.
Aşağıdaki örnekte, bir işlev içinde çağrılan SpreadsheetApp.enableLookerExecution()
yöntemi gösterilmektedir:
function addDataSource() { SpreadsheetApp.enableLookerExecution(); var spreadsheet = SpreadsheetApp.getActive(); }
Manifest dosyasına ek OAuth kapsamları ekleme
BigQuery ile bağlantı kurarken çoğu OAuth kapsamı, kodunuzda kullanılan işlevlere göre manifest dosyasına otomatik olarak eklenir. Belirli BigQuery verilerine erişmek için ek kapsamlara ihtiyacınız varsa açık kapsamlar belirleyebilirsiniz.
Örneğin, Google Drive'da barındırılan BigQuery verilerini sorgulamak için manifest dosyanıza bir Drive OAuth kapsamı eklemeniz gerekir.
Aşağıdaki örnekte, bir manifest dosyasının oauthScopes
bölümü gösterilmektedir. Gerekli minimum spreadsheet
ve bigquery.readonly
OAuth kapsamlarına ek olarak bir Drive OAuth kapsamı ekler:
{ ... "oauthScopes": [ "https://www.googleapis.com/auth/bigquery.readonly", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive" ], ... }
Örnek: Veri kaynağı nesnesi oluşturma ve yenileme
Aşağıdaki örneklerde, veri kaynağı ekleme, veri kaynağından veri kaynağı nesnesi oluşturma, veri kaynağı nesnesini yenileme ve yürütme durumunu alma işlemleri gösterilmektedir.
Veri kaynağı ekle
Aşağıdaki örneklerde sırasıyla BigQuery ve Looker veri kaynağının nasıl ekleneceği gösterilmektedir.
BigQuery
E-tabloya BigQuery veri kaynağı eklemek için veri kaynağı spesifikasyonu içeren bir veri kaynağı sayfası ekleyin. Veri kaynağı sayfası, önizleme verilerini almak için otomatik olarak yenilenir.
Aşağıdaki <YOUR_PROJECT_ID>
değerini geçerli bir Google Cloud proje kimliğiyle değiştirin.
// For operations that fetch data from BigQuery, enableBigQueryExecution() must be called.
SpreadsheetApp.enableBigQueryExecution();
var spreadsheet = SpreadsheetApp.create('Test connected sheets');
Logger.log('New test spreadsheet: %s', spreadsheet.getUrl());
// Build data source spec by selecting a table.
var dataSourceSpec = SpreadsheetApp.newDataSourceSpec()
.asBigQuery()
.setProjectId('<YOUR_PROJECT_ID>')
.setTableProjectId('bigquery-public-data')
.setDatasetId('ncaa_basketball')
.setTableId('mbb_historical_tournament_games')
.build();
// Add data source and its associated data source sheet.
var dataSourceSheet = spreadsheet.insertDataSourceSheet(dataSourceSpec);
var dataSource = dataSourceSheet.getDataSource();
Looker
Bir e-tabloya Looker veri kaynağı eklemek için veri kaynağı spesifikasyonu içeren bir veri kaynağı sayfası ekleyin. Veri kaynağı sayfası, önizleme verilerini almak için otomatik olarak yenilenir.
Aşağıdaki örnekte <INSTANCE_URL>
,<MODEL_NAME>
, <EXPLORE_NAME>
değerlerini sırasıyla geçerli bir Looker örneği URL'si, model adı ve keşif adıyla değiştirin.
// For operations that fetch data from Looker, enableLookerExecution() must be called.
SpreadsheetApp.enableLookerExecution();
var spreadsheet = SpreadsheetApp.create('Test connected sheets');
Logger.log('New test spreadsheet: %s', spreadsheet.getUrl());
// Build data source spec by selecting a table.
var dataSourceSpec = SpreadsheetApp.newDataSourceSpec()
.asLooker()
.setInstanceUrl('<INSTANCE_URL>')
.setModelName('<MODEL_NAME>')
.setExploreName('<EXPLORE_NAME>')
.build();
// Add data source and its associated data source sheet.
var dataSourceSheet = spreadsheet.insertDataSourceSheet(dataSourceSpec);
var dataSource = dataSourceSheet.getDataSource();
Veri kaynağı nesnesi ekleme
Veri kaynağı e-tabloya eklendikten sonra veri kaynağından veri kaynağı nesneleri oluşturulabilir. Bu örnekte, BigQuery veri kaynağı ekleyen kod örneğinde oluşturulan BigQuery dataSource
üzerinde DataSourcePivotTable
kullanılarak bir pivot tablo oluşturulur.
Hücre dizini veya A1 gösterimleriyle referans verilen ızgara sayfalarındaki normal verilerin aksine, veri kaynaklarından gelen verilere genellikle sütun adlarıyla referans verilir. Bu nedenle, veri kaynağı nesnelerindeki çoğu mülk ayarlayıcı giriş olarak sütun adını kullanır.
var rootCell = spreadsheet.insertSheet('pivotTableSheet').getRange('A1');
// Add data source pivot table and set data source specific configurations.
var dataSourcePivotTable = rootCell.createDataSourcePivotTable(dataSource);
var rowGroup = dataSourcePivotTable.addRowGroup('season');
rowGroup.sortDescending().setGroupLimit(5);
dataSourcePivotTable.addColumnGroup('win_school_ncaa');
dataSourcePivotTable.addPivotValue('win_pts', SpreadsheetApp.PivotTableSummarizeFunction.AVERAGE);
dataSourcePivotTable.addPivotValue('game_date', SpreadsheetApp.PivotTableSummarizeFunction.COUNTA);
var filterCriteria = SpreadsheetApp.newFilterCriteria()
.whenTextEqualToAny(['Duke', 'North Carolina'])
.build();
dataSourcePivotTable.addFilter('win_school_ncaa', filterCriteria);
// Get a regular pivot table instance and set shared configurations.
var pivotTable = dataSourcePivotTable.asPivotTable();
pivotTable.setValuesDisplayOrientation(SpreadsheetApp.Dimension.ROWS);
Veri kaynağı nesnesini yenileme
Veri kaynağı özelliklerine ve nesne yapılandırmalarına göre BigQuery'den en son verileri almak için veri kaynağı nesnelerini yenileyebilirsiniz.
Verileri yenileme işlemi eşzamansızdır. Bir veri kaynağı nesnesini yenilemek için aşağıdaki yöntemleri kullanın:
refreshData()
, veri yenileme yürütme işlemini başlatır.waitForCompletion()
, veri yürütme işlemi tamamlandıktan sonra son durumu döndürür. Bu sayede, yürütme durumunu sürekli olarak sorgulamaya gerek kalmaz.- Veri yürütme işlemi başarısız olursa
DataExecutionStatus.getErrorCode()
hata kodunu alır.
Aşağıdaki örnekte, pivot tablo verilerinin yenilenmesi gösterilmektedir:
var status = dataSourcePivotTable.getStatus();
Logger.log('Initial state: %s', status.getExecutionState());
dataSourcePivotTable.refreshData();
status = dataSourcePivotTable.waitForCompletion(/* timeoutInSeconds= */ 60);
Logger.log('Ending state: %s', status.getExecutionState());
if (status.getExecutionState() == SpreadsheetApp.DataExecutionState.ERROR) {
Logger.log('Error: %s (%s)', status.getErrorCode(), status.getErrorMessage());
}
Tetikleyicileri Bağlı Sayfalar ile kullanma
Tetikleyiciler ve etkinlikler ile Bağlı E-Tablolar veri kaynağı işlevlerinizi otomatikleştirin. Örneğin, veri kaynağı nesnelerini belirli bir zamanda tekrar tekrar yenilemek için zamana dayalı tetikleyicileri, önceden tanımlanmış bir etkinlikte veri yürütmeyi tetiklemek için e-tablo etkinlik tetikleyicilerini kullanın.
Aşağıdaki örnekte, sorgu parametresi içeren bir BigQuery veri kaynağı eklenir ve sorgu parametresi düzenlendiğinde veri kaynağı sayfası yenilenir.
Aşağıdaki <YOUR_PROJECT_ID>
değerini geçerli bir Google Cloud proje kimliğiyle değiştirin.
// Add data source with query parameter.
function addDataSource() {
SpreadsheetApp.enableBigQueryExecution();
var spreadsheet = SpreadsheetApp.getActive();
// Add a new sheet and use A1 cell as the parameter cell.
var parameterCell = spreadsheet.insertSheet('parameterSheet').getRange('A1');
parameterCell.setValue('Duke');
// Add data source with query parameter.
var dataSourceSpec = SpreadsheetApp.newDataSourceSpec()
.asBigQuery()
.setProjectId('<YOUR_PROJECT_ID>')
.setRawQuery('select * from `bigquery-public-data`.`ncaa_basketball`.`mbb_historical_tournament_games` WHERE win_school_ncaa = @SCHOOL')
.setParameterFromCell('SCHOOL', 'parameterSheet!A1')
.build();
var dataSourceSheet = spreadsheet.insertDataSourceSheet(dataSourceSpec);
dataSourceSheet.asSheet().setName('ncaa_data');
}
// Function used to configure event trigger to refresh data source sheet.
function refreshOnParameterEdit(e) {
var editedRange = e.range;
if (editedRange.getSheet().getName() != 'parameterSheet') {
return;
}
// Check that the edited range includes A1.
if (editedRange.getRow() > 1 || editedRange.getColumn() > 1) {
return;
}
var spreadsheet = e.source;
SpreadsheetApp.enableBigQueryExecution();
spreadsheet.getSheetByName('ncaa_data').asDataSourceSheet().refreshData();
}
Yukarıdaki örnekte addDataSource()
işlevi, e-tabloya bir veri kaynağı ekler. addDataSource()
'ü çalıştırdıktan sonra Apps Script düzenleyicisinde bir etkinlik tetikleyicisi oluşturun. Etkinlik tetikleyicisinin nasıl oluşturulacağını öğrenmek için Yüklenebilir tetikleyiciler başlıklı makaleyi inceleyin.
Tetikleyiciniz için aşağıdaki seçenekleri belirleyin:
- Etkinlik kaynağı: E-tablodan
- Etkinlik türü: Düzenleme sırasında
- Çalıştırılacak işlev:
refreshOnParameterEdit
Tetikleyici oluşturulduktan sonra, parametre hücresi her düzenlendiğinde veri kaynağı sayfası otomatik olarak yenilenir.
Sorun giderme
Hata mesajı | Çözünürlük |
---|---|
BIGQUERY veri kaynaklarına yönelik veri yürütme işlemlerini etkinleştirmek için enableBigQuery() yöntemini kullanın. |
Bu hata, BigQuery verilerini getirmeden önce SpreadsheetApp.enableBigQueryExecution() işlevinin çağrılmadığını gösterir.BigQuery yürütme yöntemlerini kullanan işlevlerde SpreadsheetApp.enableBigQueryExecution() işlevini çağırın. Örneğin, veri kaynağı nesnelerinde refreshData() , Spreadsheet.insertDataSourceTable() ve DataSource.updateSpec() . Bu yöntemlerin çalışması için ek bir bigquery.readonly OAuth kapsamı gerekir. |
Veri kaynaklarında işlem yapılmasına izin verilmiyor. Özelliği etkinleştirmek için lütfen yöneticinizle iletişime geçin. |
Bu hata, hesapta Bağlı Sayfalar'ın etkin olmadığını gösterir. Bağlı Sayfalar yalnızca belirli abonelikleri olan kullanıcılar tarafından kullanılabilir. Özelliği etkinleştirmek için yöneticinizle iletişime geçin. |