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

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

কানেক্টেড শিট-এর সাধারণ অ্যাকশন

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

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

প্রয়োজনীয় অনুমোদনের সুযোগ যোগ করুন

BigQuery ডেটা অ্যাক্সেস করতে, আপনার Google Apps স্ক্রিপ্ট কোডে enableBigQueryExecution() পদ্ধতিটি অন্তর্ভুক্ত করতে হবে। এই পদ্ধতিটি আপনার Google Apps স্ক্রিপ্ট প্রকল্পে প্রয়োজনীয় bigquery.readonly OAuth স্কোপ যোগ করে।

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

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

Looker ডেটা অ্যাক্সেস করতে, আপনার Google Apps Script কোডে enableLookerExecution() পদ্ধতিটি অন্তর্ভুক্ত করতে হবে। Apps Script-এ Looker অ্যাক্সেস করলে Looker-এর সাথে আপনার বিদ্যমান Google অ্যাকাউন্টের লিঙ্কটি পুনরায় ব্যবহার করা হবে।

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

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

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

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

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

নিম্নলিখিত নমুনাটি একটি ম্যানিফেস্ট ফাইলের oauthScopes অংশ দেখায়। এটি ন্যূনতম প্রয়োজনীয় spreadsheet এবং bigquery.readonly OAuth স্কোপ ছাড়াও একটি ড্রাইভ 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> এর পরিবর্তে একটি বৈধ Google ক্লাউড প্রোজেক্ট আইডি দিন।

// 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 ডেটা সোর্স যোগ করতে, একটি ডেটা সোর্স স্পেসিফিকেশন সহ একটি ডেটা সোর্স শিট ঢোকান। প্রিভিউ ডেটা আনার জন্য ডেটা সোর্স শিটটি স্বয়ংক্রিয়ভাবে রিফ্রেশ হয়।

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

// 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 dataSourceDataSourcePivotTable ব্যবহার করে একটি পিভট টেবিল তৈরি করা হয়েছে যা একটি BigQuery datasource যোগ করে।

গ্রিড শিটে নিয়মিত ডেটা যেমন সেল ইনডেক্স বা 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> এর পরিবর্তে একটি বৈধ Google ক্লাউড প্রোজেক্ট আইডি দিন।

// 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() কার্যকর করার পর, Apps Script এডিটরে একটি ইভেন্ট ট্রিগার তৈরি করুন। ইভেন্ট ট্রিগার কীভাবে তৈরি করবেন তা জানতে, Installable triggers দেখুন।

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

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

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

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

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