Bağlı Sayfaları kullanma

Bağlı sayfalar, BigQuery ve Looker verilerini doğrudan E-Tablolar'da analiz etmenizi sağlayan bir Google E-Tablolar özelliğidir. Bağlı sayfalar özelliğine, E-Tablolar hizmetiyle programatik olarak erişebilirsiniz.

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

BigQuery veya Looker'a bağlanmak ve verileri analiz etmek için DataSource sınıfları ve nesneleri kullanın. Aşağıdaki tabloda en yaygın DataSource işlemleri ve bunların Apps Komut Dosyası'nda nasıl oluşturulacağı listelenmiştir:

İşlem Google Apps Komut Dosyası sınıfı Kullanım yöntemi
Bir sayfayı desteklenen bir veri kaynağına bağlama DataSourceSpec SpreadsheetApp.newDataSourceSpec()
Veri kaynağını 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ı ekleyin

BigQuery verilerine erişmek için Google Apps Komut Dosyası kodunuza enableBigQueryExecution() yöntemini eklemeniz gerekir. Bu yöntem, Google Apps Komut Dosyası projenize gerekli bigquery.readonly OAuth kapsamını 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şirken mevcut Google Hesabı-Looker bağlantınız yeniden kullanılı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'ye bağlanırken, kodunuzda kullanılan işlevlere bağlı olarak çoğu OAuth kapsamı manifest dosyasına otomatik olarak eklenir. Belirli BigQuery verilerine erişmek için ek kapsamlar gerekiyorsa açık kapsamlar ayarlayabilirsiniz.

Örneğin, Google Drive'da barındırılan BigQuery verilerine sorgu göndermek 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. Minimum düzeyde gerekli 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 bir BigQuery ve bir Looker veri kaynağının nasıl ekleneceği gösterilmektedir.

BigQuery

Bir e-tabloya BigQuery veri kaynağı eklemek için veri kaynağı spesifikasyonu içeren 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();

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 getirmek 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ğı 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 notasyonlarıyla referans verilen ızgara sayfalarındaki normal verilerin aksine, veri kaynaklarındaki 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 getirmek 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 yürütmesini başlatır.
  2. 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 yoklamaya gerek kalmaz.
  3. DataExecutionStatus.getErrorCode(), veri yürütme başarısız olursa 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ı sayfalarla 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ı tetikleyicileri, önceden tanımlanmış bir etkinlikte veri yürütmeyi tetiklemek için ise e-tablo etkinlik tetikleyicilerini kullanın.

Aşağıdaki örnekte, sorgu parametresi içeren bir BigQuery veri kaynağı ekleniyor ve sorgu parametresi düzenlendiğinde veri kaynağı sayfası yenileniyor.

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üzenleyici'de bir etkinlik tetikleyicisi oluşturun. Etkinlik tetikleyici oluşturmayı öğ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 yapıldığı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 verileri getirilmeden ö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ı E-Tablolar'ın etkinleştirilmediğini gösterir.
Bağlı E-Tablolar yalnızca belirli aboneliklere sahip Google Workspace kullanıcıları tarafından kullanılabilir.
Özelliği etkinleştirmek için yöneticinizle iletişime geçin.