Bağlı Sayfaları kullanma

Bağlı Sayfalar, BigQuery verilerini doğrudan E-Tablolar'da analiz etmenize olanak tanıyan bir Google E-Tablolar özelliğidir. E-tablo hizmetiyle Bağlı Sayfalara programatik olarak erişebilirsiniz.

Sık kullanılan Bağlı Sayfalar işlemleri

BigQuery'ye 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 Komut Dosyası'nda nasıl oluşturulacağı açıklanmaktadır:

İşlem Google Apps Komut Dosyası sınıfı Kullanılacak yöntem
Bir sayfayı BigQuery'ye bağlama DataSourceSpec SpreadsheetApp.newDataSourceSpec()
BigQuery veri kaynağı seçin DataSource Spreadsheet.insertDataSourceSheet().getDataSource()
BigQuery 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ı ekleyin

BigQuery verilerine erişmek için Google Apps Komut Dosyası kodunuza enableBigQueryExecution() yöntemini eklemeniz gerekir. Bu yöntem, 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();
  }

Manifest dosyasına başka OAuth kapsamları ekleme

Ç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 ayarlayabilirsiniz.

Ö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 kapsamı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 örnekte BigQuery 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. Bu örnekte, kod snippet'leri sırayla yürütülür.

BigQuery veri kaynağı ekleme

Bir e-tabloya BigQuery veri kaynağı eklemek için veri kaynağı spesifikasyonuna sahip bir veri kaynağı sayfası ekleyin. Veri kaynağı sayfası, önizleme verilerini getirmek için otomatik olarak yenilenir.

Aşağıdaki <YOUR_PROJECT_ID> kısmını 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();

Veri kaynağı nesnesi ekleme

Veri kaynağı e-tabloya eklendikten sonra, veri kaynağından veri kaynağı nesneleri oluşturulabilir. Bu örnekte, DataSourcePivotTable kullanılarak bir pivot tablo oluşturulmuştur.

Tablo sayfalarındaki hücre dizini veya A1 gösterimleri tarafından başvurulan 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:

  1. refreshData(), veri yenileme işlemini başlatır.
  2. waitForCompletion(), veri yürütme tamamlandığında son durumu döndürür. Bu sayede, yürütme durumunu yoklamaya devam etme ihtiyacı ortadan kalkar.
  3. DataExecutionStatus.getErrorCode(), veri yürütülmesinin başarısız olması durumunda 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());
}

Bağlı Sayfalar'da tetikleyicileri kullanma

Tetikleyiciler ve etkinlikler ile Bağlı Sayfalar veri kaynağı işlevlerinizi otomatikleştirin. Örneğin, veri kaynağı nesnelerini belirli bir zamanda tekrar tekrar yenilemek için zamana dayalı tetikleyicilerden ve önceden tanımlanmış bir etkinlikte veri yürütmeyi tetiklemek için e-tablo etkinlik tetikleyicilerinden yararlanın.

Aşağıdaki örnekte, sorgu parametresine sahip bir veri kaynağı eklenir ve sorgu parametresi düzenlendiğinde veri kaynağı sayfası yenilenir.

Aşağıdaki <YOUR_PROJECT_ID> kısmını 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() komutunu yürüttükten sonra Apps Komut Dosyası düzenleyicisinde bir etkinlik tetikleyicisi oluşturun. Etkinlik tetikleyicisinin nasıl oluşturulacağını öğrenmek için Yüklenebilir tetikleyiciler konusuna bakın.

Tetikleyiciniz için aşağıdaki seçenekleri belirleyin:

  • Etkinlik kaynağı: E-tablodan
  • Etkinlik türü: Düzenlendiğinde
  • Ç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ı için veri yürütme işlemlerini etkinleştirmek üzere enableBigQuery() kullanın. Bu hata, BigQuery verileri getirilmeden önce SpreadsheetApp.enableBigQueryExecution() ürününün çağrılmadığını gösterir.
BigQuery yürütme yöntemlerini kullanan işlevlerde SpreadsheetApp.enableBigQueryExecution() çağrısı yapın.
Örneğin, refreshData() veri kaynağı nesneleri üzerinde Spreadsheet.insertDataSourceTable() ve DataSource.updateSpec().
Bu yöntemlerin çalışması için ek bir bigquery.readonly OAuth kapsamı gerekir.
Veri kaynakları üzerinde 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 özelliğinin etkinleştirilmediğini gösterir.
Bağlı Sayfalar, yalnızca Google Workspace belirli aboneliklere sahip kullanıcılar tarafından kullanılabilir.
Özelliği etkinleştirmek için yöneticinizle iletişime geçin.