সংযুক্ত শীট ব্যবহার করুন

কানেক্টেড শীটস হলো গুগল শীটসের একটি ফিচার, যা আপনাকে সরাসরি শীটসের মধ্যেই BigQuery এবং Looker ডেটা বিশ্লেষণ করতে দেয়। স্প্রেডশীট সার্ভিসের মাধ্যমে প্রোগ্রাম্যাটিকভাবে কানেক্টেড শীটস অ্যাক্সেস করা যায়।

সাধারণ সংযুক্ত শীটগুলির ক্রিয়াকলাপ

BigQuery বা Looker-এর সাথে সংযোগ স্থাপন করতে এবং ডেটা বিশ্লেষণ করতে DataSource ক্লাস ও অবজেক্ট ব্যবহার করুন। নিচের সারণিতে সবচেয়ে প্রচলিত DataSource অ্যাকশনগুলো এবং Google Apps Script-এ সেগুলো কীভাবে তৈরি করতে হয় তা তালিকাভুক্ত করা হলো:

পদক্ষেপ অ্যাপস স্ক্রিপ্ট ক্লাস ব্যবহারের পদ্ধতি
একটি শীটকে একটি সমর্থিত ডেটা উৎসের সাথে সংযুক্ত করুন DataSourceSpec SpreadsheetApp.newDataSourceSpec()
একটি ডেটা উৎস নির্বাচন করুন DataSource Spreadsheet.insertDataSourceSheet().getDataSource()
একটি ডেটা উৎস শীট যোগ করুন DataSourceSheet Spreadsheet.insertDataSourceSheet()
একটি পিভট টেবিল যোগ করুন DataSourcePivotTable Range.insertDataSourcePivotTable()
ডেটা একটি এক্সট্র্যাক্টে নিয়ে আসুন DataSourceTable Range.insertDataSourceTable()
একটি সূত্র ব্যবহার করুন DataSourceFormula Range.setFormula()
একটি চার্ট যোগ করুন DataSourceChart Sheet.insertDataSourceChart()

প্রয়োজনীয় অনুমোদন পরিধি যোগ করুন

BigQuery ডেটা অ্যাক্সেস করতে, আপনার অ্যাপস স্ক্রিপ্ট কোডে enableBigQueryExecution() মেথডটি অন্তর্ভুক্ত করুন। এই মেথডটি আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে প্রয়োজনীয় bigquery.readonly OAuth স্কোপটি যোগ করে।

নিম্নলিখিত নমুনাটি একটি ফাংশনের মধ্যে SpreadsheetApp.enableBigQueryExecution() মেথড কল করা দেখাচ্ছে:

function addDataSource() {
  SpreadsheetApp.enableBigQueryExecution();
  var spreadsheet = SpreadsheetApp.getActive();
  }

লুকার ডেটা অ্যাক্সেস করতে, আপনার অ্যাপস স্ক্রিপ্ট কোডে enableLookerExecution() মেথডটি অন্তর্ভুক্ত করুন। অ্যাপস স্ক্রিপ্টে লুকার অ্যাক্সেস করলে, লুকারের সাথে আপনার বিদ্যমান গুগল অ্যাকাউন্ট লিঙ্কটি পুনরায় ব্যবহৃত হয়।

নিম্নলিখিত নমুনাটি একটি ফাংশনের মধ্যে SpreadsheetApp.enableLookerExecution() মেথড কল করা দেখাচ্ছে:

function addDataSource() {
  SpreadsheetApp.enableLookerExecution();
  var spreadsheet = SpreadsheetApp.getActive();
  }

ম্যানিফেস্ট ফাইলে অতিরিক্ত OAuth স্কোপ যোগ করুন

BigQuery-এর সাথে সংযোগ করার সময়, আপনার কোডে ব্যবহৃত ফাংশনগুলোর উপর ভিত্তি করে বেশিরভাগ OAuth স্কোপ স্বয়ংক্রিয়ভাবে ম্যানিফেস্ট ফাইলে যুক্ত হয়ে যায়। নির্দিষ্ট BigQuery ডেটা অ্যাক্সেস করার জন্য যদি আপনার অতিরিক্ত স্কোপের প্রয়োজন হয়, তবে আপনি সুস্পষ্ট স্কোপ সেট করতে পারেন।

উদাহরণস্বরূপ, গুগল ড্রাইভে হোস্ট করা BigQuery ডেটা কোয়েরি করতে হলে, আপনাকে আপনার ম্যানিফেস্ট ফাইলে একটি Drive OAuth স্কোপ যোগ করতে হবে।

নিম্নলিখিত নমুনাটি একটি ম্যানিফেস্ট ফাইলের oauthScopes অংশটি দেখাচ্ছে। এটি ন্যূনতম প্রয়োজনীয় spreadsheet এবং bigquery.readonly OAuth স্কোপগুলোর পাশাপাশি একটি Drive OAuth স্কোপ যোগ করে:

{ ...
  "oauthScopes": [
    "https://www.googleapis.com/auth/bigquery.readonly",
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/drive" ],
... }

উদাহরণ: একটি ডেটা সোর্স অবজেক্ট তৈরি এবং রিফ্রেশ করুন

নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে একটি ডেটা সোর্স যোগ করতে হয়, ডেটা সোর্স থেকে একটি ডেটা সোর্স অবজেক্ট তৈরি করতে হয়, ডেটা সোর্স অবজেক্টটি রিফ্রেশ করতে হয় এবং এক্সিকিউশন স্ট্যাটাস পেতে হয়।

একটি ডেটা উৎস যোগ করুন

নিম্নলিখিত উদাহরণগুলিতে যথাক্রমে একটি BigQuery এবং একটি Looker ডেটা সোর্স যোগ করার পদ্ধতি দেখানো হয়েছে।

বিগকোয়েরি

একটি স্প্রেডশীটে BigQuery ডেটা সোর্স যোগ করতে, একটি ডেটা সোর্স স্পেক সহ একটি ডেটা সোর্স শীট ইনসার্ট করুন। প্রিভিউ ডেটা আনার জন্য ডেটা সোর্স শীটটি স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়।

নিচের <YOUR_PROJECT_ID> এর জায়গায় একটি বৈধ গুগল ক্লাউড প্রজেক্ট আইডি বসান।

// 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();

লুকার

একটি স্প্রেডশীটে লুকার ডেটা সোর্স যোগ করতে, একটি ডেটা সোর্স স্পেক সহ একটি ডেটা সোর্স শীট ইনসার্ট করুন। প্রিভিউ ডেটা আনার জন্য ডেটা সোর্স শীটটি স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়।

নিচের নমুনাটিতে <INSTANCE_URL> , <MODEL_NAME> , <EXPLORE_NAME> যথাক্রমে একটি বৈধ Looker ইনস্ট্যান্স URL, মডেলের নাম এবং এক্সপ্লোরের নাম দিয়ে প্রতিস্থাপন করুন।

// 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();

একটি ডেটা সোর্স অবজেক্ট যোগ করুন

স্প্রেডশিটে ডেটা সোর্স যোগ করার পর, সেই ডেটা সোর্স থেকে ডেটা সোর্স অবজেক্ট তৈরি করা যায়। এই উদাহরণে, কোড স্যাম্পলে তৈরি করা BigQuery dataSource উপর DataSourcePivotTable ব্যবহার করে একটি পিভট টেবিল তৈরি করা হয়েছে , যা একটি BigQuery ডেটা সোর্স যোগ করে

গ্রিড শীটের সাধারণ ডেটা যেখানে সেল ইনডেক্স বা A1 চিহ্ন দ্বারা নির্দেশিত হয়, তার বিপরীতে ডেটা সোর্সের ডেটা সাধারণত কলামের নাম দ্বারা নির্দেশিত হয়। এই কারণে, ডেটা সোর্স অবজেক্টের বেশিরভাগ প্রপার্টি সেটার ইনপুট হিসেবে কলামের নাম ব্যবহার করে।

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);

একটি ডেটা সোর্স অবজেক্ট রিফ্রেশ করুন

ডেটা সোর্স স্পেসিফিকেশন এবং অবজেক্ট কনফিগারেশনের উপর ভিত্তি করে BigQuery থেকে সর্বশেষ ডেটা আনার জন্য ডেটা সোর্স অবজেক্টগুলো রিফ্রেশ করুন।

ডেটা রিফ্রেশ করার প্রক্রিয়াটি অ্যাসিঙ্ক্রোনাস। একটি ডেটা সোর্স অবজেক্ট রিফ্রেশ করতে, নিম্নলিখিত মেথডগুলো ব্যবহার করুন:

  1. refreshData() ফাংশন ডেটা রিফ্রেশ প্রক্রিয়া শুরু করে।
  2. ডেটা এক্সিকিউশন সম্পন্ন হয়ে গেলে waitForCompletion() ফাংশনটি সমাপ্তির অবস্থা রিটার্ন করে। এর ফলে এক্সিকিউশনের স্ট্যাটাস বারবার পোল করার প্রয়োজন হয় না।
  3. ডেটা এক্সিকিউশন ব্যর্থ হলে, DataExecutionStatus.getErrorCode() এরর কোডটি পাওয়া যায়।

নিম্নলিখিত নমুনাটি পিভট টেবিলের ডেটা রিফ্রেশ করার প্রক্রিয়া প্রদর্শন করে:

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());
}

কানেক্টেড শীটসের সাথে ট্রিগার ব্যবহার করুন

ট্রিগার এবং ইভেন্টের সাহায্যে আপনার কানেক্টেড শীটস ডেটা সোর্স ফাংশনগুলো স্বয়ংক্রিয় করুন। উদাহরণস্বরূপ, একটি নির্দিষ্ট সময়ে বারবার ডেটা সোর্স অবজেক্ট রিফ্রেশ করতে টাইম-ড্রাইভেন ট্রিগার ব্যবহার করুন, এবং একটি পূর্বনির্ধারিত ইভেন্টে ডেটা এক্সিকিউশন শুরু করতে স্প্রেডশীট ইভেন্ট ট্রিগার ব্যবহার করুন।

নিম্নলিখিত নমুনাটি একটি কোয়েরি প্যারামিটার সহ একটি BigQuery ডেটা সোর্স যোগ করে এবং যখন কোয়েরি প্যারামিটারটি সম্পাদনা করা হয় তখন ডেটা সোর্স শীটটি রিফ্রেশ করে।

<YOUR_PROJECT_ID> এর জায়গায় একটি বৈধ গুগল ক্লাউড প্রজেক্ট আইডি বসান।

// 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();
}

পূর্ববর্তী নমুনায়, addDataSource() ফাংশনটি স্প্রেডশিটে একটি ডেটা সোর্স যোগ করে। addDataSource() এক্সিকিউট করার পর, অ্যাপস স্ক্রিপ্ট এডিটরে একটি ইভেন্ট ট্রিগার তৈরি করুন। কীভাবে একটি ইভেন্ট ট্রিগার তৈরি করতে হয় তা জানতে, ইনস্টলযোগ্য ট্রিগার (Installable triggers) দেখুন।

আপনার ট্রিগারের জন্য নিম্নলিখিত বিকল্পগুলি নির্বাচন করুন:

  • ইভেন্টের উৎস : স্প্রেডশিট থেকে
  • ইভেন্টের ধরণ : সম্পাদনার সময়
  • চালানোর জন্য ফাংশন : refreshOnParameterEdit

একবার ট্রিগারটি তৈরি হয়ে গেলে, প্রতিবার প্যারামিটার সেলটি সম্পাদনা করার সময় ডেটা সোর্স শীটটি স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়ে যায়।

সমস্যা সমাধান

ত্রুটি বার্তা সমাধান
BIGQUERY ডেটা সোর্সগুলির জন্য ডেটা এক্সিকিউশন সক্রিয় করতে enableBigQuery() ব্যবহার করুন। এই ত্রুটিটি নির্দেশ করে যে BigQuery ডেটা আনার আগে SpreadsheetApp.enableBigQueryExecution() কল করা হয়নি।
যেসব ফাংশন BigQuery এক্সিকিউশনের জন্য মেথড ব্যবহার করে, সেগুলোতে SpreadsheetApp.enableBigQueryExecution() কল করুন।
যেমন, ডেটা সোর্স অবজেক্টে refreshData() , Spreadsheet.insertDataSourceTable() , এবং DataSource.updateSpec()
এই পদ্ধতিগুলো কাজ করার জন্য একটি অতিরিক্ত bigquery.readonly OAuth স্কোপ প্রয়োজন।
ডেটা উৎসের উপর কাজ করার অনুমতি নেই।
ফিচারটি চালু করতে অনুগ্রহ করে আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।
এই ত্রুটিটি নির্দেশ করে যে অ্যাকাউন্টটিতে কানেক্টেড শীটস সক্রিয় করা নেই।
কানেক্টেড শীটস শুধুমাত্র নির্দিষ্ট সাবস্ক্রিপশন থাকা গুগল ওয়ার্কস্পেস ব্যবহারকারীদের জন্য উপলব্ধ।
ফিচারটি চালু করতে আপনার অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।