Class SpreadsheetApp

スプレッドシート アプリ

Google スプレッドシート ファイルにアクセスして作成する。このクラスは、スプレッドシート サービスの親クラスです。

Properties

プロパティ種類説明
AutoFillSeriesAutoFillSeries自動入力された値の計算に使用される系列の種類を列挙したものです。
BandingThemeBandingTheme考えられるバンディング テーマの列挙。
BooleanCriteriaBooleanCriteria条件付き書式のブール値条件の列挙型です。
BorderStyleBorderStyleRange に境界を設定するための有効なスタイルの列挙型。
ColorTypeColorType使用可能なカラー型の列挙型。
CopyPasteTypeCopyPasteType使用可能な貼り付けタイプの列挙。
DataExecutionErrorCodeDataExecutionErrorCode可能性のあるデータ実行のエラーコードの列挙。
DataExecutionStateDataExecutionState可能性のあるデータ実行状態の列挙型。
DataSourceParameterTypeDataSourceParameterType使用可能なデータソース パラメータの型の列挙型。
DataSourceRefreshScopeDataSourceRefreshScope可能なデータソース更新スコープの列挙。
DataSourceTypeDataSourceType使用可能なデータソース タイプの列挙型。
DataValidationCriteriaDataValidationCriteria範囲に設定できるデータ検証基準を表す列挙型。
DateTimeGroupingRuleTypeDateTimeGroupingRuleType日時のグループ化ルールの列挙型です。
DeveloperMetadataLocationTypeDeveloperMetadataLocationType可能なデベロッパー メタデータの場所タイプの列挙。
DeveloperMetadataVisibilityDeveloperMetadataVisibilityデベロッパー メタデータの表示可能性の列挙。
DimensionDimensionスプレッドシートで使用できるディメンションの列挙型です。
DirectionDirectionスプレッドシート内の矢印キーで移動できる経路の列挙。
FrequencyTypeFrequencyType可能性のある頻度のタイプの列挙型。
GroupControlTogglePositionGroupControlTogglePositionグループ コントロールの切り替えに使用できる位置の列挙です。
InterpolationTypeInterpolationType条件付き書式勾配補間型の列挙型。
PivotTableSummarizeFunctionPivotTableSummarizeFunctionピボット テーブル内の値を集約するために使用できる関数の列挙型。
PivotValueDisplayTypePivotValueDisplayTypeピボット値の表示方法を列挙します。
ProtectionTypeProtectionType編集から保護できるスプレッドシートの各部分を表す列挙型。
RecalculationIntervalRecalculationIntervalスプレッドシートの再計算に使用できる可能性のある間隔の列挙です。
RelativeDateRelativeDate日付ベースの BooleanCriteria で使用される値を計算するための相対日付オプションの列挙型。
SheetTypeSheetTypeスプレッドシートにさまざまなタイプのシートを示します。
SortOrderSortOrder並べ替え順序の列挙型。
TextDirectionTextDirection有効なテキストによるルートの列挙。
TextToColumnsDelimiterTextToColumnsDelimiterテキストを列に分割するためのプリセット区切り文字の列挙型。
ThemeColorTypeThemeColorType使用可能なテーマカラー タイプの列挙型。
ValueTypeValueTypeスプレッドシート サービスの Range クラスから Range.getValue()Range.getValues() によって返される値の型の列挙。列挙値は、NumberBooleanDate、または String に追加されます。
WrapStrategyWrapStrategyセルのラップに使用する戦略を列挙します。

Methods

方法戻り値の型概要
create(name)Spreadsheet指定された名前で新しいスプレッドシートを作成します。
create(name, rows, columns)Spreadsheet指定した名前と行と列の数で新しいスプレッドシートを作成します。
enableAllDataSourcesExecution()voidすべてのタイプのデータソースでデータの実行を可能にします。
enableBigQueryExecution()voidBigQuery データソースに対してデータ実行を有効にします。
flush()voidスプレッドシートの保留中の変更をすべて適用します。
getActive()Spreadsheet現在アクティブなスプレッドシートを返します。ない場合は null を返します。
getActiveRange()Rangeアクティブ シート内の選択された範囲を返します。アクティブな範囲がない場合は null を返します。
getActiveRangeList()RangeListアクティブ シート内のアクティブな範囲のリストを返します。範囲が選択されていない場合は null を返します。
getActiveSheet()Sheetスプレッドシート内の有効なシートを取得します。
getActiveSpreadsheet()Spreadsheet現在アクティブなスプレッドシートを返します。ない場合は null を返します。
getCurrentCell()Rangeアクティブ シート内のアクティブな範囲の 1 つで選択されている現在の(ハイライトされた)セルを返します。現在のセルがない場合は、null を返します。
getSelection()Selectionスプレッドシートの現在の Selection を返します。
getUi()Uiスクリプトがメニュー、ダイアログ、サイドバーなどの機能を追加できるようにするための、スプレッドシートのユーザー インターフェース環境のインスタンスを返します。
newCellImage()CellImageBuilderCellImage のビルダーを作成します。
newColor()ColorBuilderColor のビルダーを作成します。
newConditionalFormatRule()ConditionalFormatRuleBuilder条件付き書式ルールのビルダーを作成します。
newDataSourceSpec()DataSourceSpecBuilderDataSourceSpec のビルダーを作成します。
newDataValidation()DataValidationBuilderデータ検証ルールのビルダーを作成します。
newFilterCriteria()FilterCriteriaBuilderFilterCriteria のビルダーを作成します。
newRichTextValue()RichTextValueBuilderリッチテキスト値のビルダーを作成します。
newTextStyle()TextStyleBuilderテキスト スタイルのビルダーを作成します。
open(file)Spreadsheet指定された File オブジェクトに対応するスプレッドシートを開きます。
openById(id)Spreadsheet指定された ID のスプレッドシートを開きます。
openByUrl(url)Spreadsheet指定された URL のスプレッドシートを開きます。
setActiveRange(range)Range指定された範囲を active range として設定し、範囲内の左上のセルを current cell として設定します。
setActiveRangeList(rangeList)RangeList指定された範囲のリストを active ranges として設定します。
setActiveSheet(sheet)Sheetスプレッドシートに有効なシートを設定します。
setActiveSheet(sheet, restoreSelection)Sheetスプレッドシートにアクティブなシートを設定します。そのシート内で最近選択したシートを復元するオプションもあります。
setActiveSpreadsheet(newActiveSpreadsheet)void有効なスプレッドシートを設定します。
setCurrentCell(cell)Range指定したセルを current cell に設定します。

詳細なドキュメント

create(name)

指定された名前で新しいスプレッドシートを作成します。

// The code below creates a new spreadsheet "Finances" and logs the URL for it
var ssNew = SpreadsheetApp.create("Finances");
Logger.log(ssNew.getUrl());

パラメータ

名前説明
nameStringスプレッドシートの名前。

戻る

Spreadsheet - 新しいスプレッドシート

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets

create(name, rows, columns)

指定された名前と行と列の数で新しいスプレッドシートを作成します。

// The code below creates a new spreadsheet "Finances" with 50 rows and 5 columns and logs the
// URL for it
var ssNew = SpreadsheetApp.create("Finances", 50, 5);
Logger.log(ssNew.getUrl());

パラメータ

名前説明
nameStringスプレッドシートの名前。
rowsIntegerスプレッドシートの行数。
columnsIntegerスプレッドシートの列数。

戻る

Spreadsheet - 新しいスプレッドシート

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets

enableAllDataSourcesExecution()

すべてのタイプのデータソースでデータの実行を可能にします。

データソースの種類が有効になっていない場合、データの実行は例外をスローします。すべてのデータソース タイプでデータの実行を有効にするには、このメソッドを使用します。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/bigquery.readonly

enableBigQueryExecution()

BigQuery データソースに対してデータ実行を有効にします。

BigQuery データソースのデータ実行が有効になっていないと、例外がスローされます。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/bigquery.readonly

flush()

スプレッドシートの保留中の変更をすべて適用します。

パフォーマンス向上のために、スプレッドシート オペレーションがバンドルされることがあります(Range.getValue() を複数回呼び出す場合など)。ただし、スクリプトの実行中にユーザーデータを表示するなど、保留中のすべての変更をすぐに適用する必要がある場合があります。

// The code below changes the background color of cells A1 and B1 twenty times. You should be
// able to see the updates live in the spreadsheet. If flush() is not called, the updates may
// be applied live or may all be applied at once when the script completes.
function colors() {
  var sheet = SpreadsheetApp.getActiveSheet();
  for (var i = 0; i < 20; i++) {
    if ((i % 2) == 0) {
      sheet.getRange('A1').setBackground('green');
      sheet.getRange('B1').setBackground('red');
    } else {
      sheet.getRange('A1').setBackground('red');
      sheet.getRange('B1').setBackground('green');
    }
    SpreadsheetApp.flush();
  }
}

getActive()

現在アクティブなスプレッドシートを返します。スプレッドシートがない場合は null を返します。

スプレッドシートのコンテキストで実行される関数は、この関数を呼び出すことによって、対応するスプレッドシート オブジェクトへの参照を取得できます。

// The code below logs the URL for the active spreadsheet.
Logger.log(SpreadsheetApp.getActive().getUrl());

戻る

Spreadsheet - アクティブなスプレッドシート オブジェクト。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveRange()

アクティブ シート内の選択された範囲を返します。アクティブな範囲がない場合は null を返します。複数の範囲が選択されている場合、このメソッドは最後に選択した範囲のみを返します。

これは一般に、アクティブ シートでユーザーが選択した範囲ですが、カスタム関数ではセルが再計算されていることを意味します。

// The code below logs the background color for the active range.
var colorObject = SpreadsheetApp.getActiveRange().getBackgroundObject();
// Assume the color has ColorType.RGB.
Logger.log(colorObject.asRgbColor().asHexString());

戻る

Range - アクティブ範囲。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveRangeList()

アクティブ シート内のアクティブな範囲のリストを返します。範囲が選択されていない場合は null を返します。現在ハイライト表示されているセルを含むアクティブ範囲が、リストの最後に配置されます。

単一の範囲が選択されている場合、これは getActiveRange() 呼び出しと同様に動作します。

// Returns the list of active ranges.
var rangeList = SpreadsheetApp.getActiveRangeList();

戻る

RangeList - アクティブ範囲のリスト

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveSheet()

スプレッドシート内の有効なシートを取得します。

スプレッドシートの有効なシートは、スプレッドシートの UI に表示されているシートです。

// The code below logs the name of the active sheet.
Logger.log(SpreadsheetApp.getActiveSheet().getName());

戻る

Sheet - アクティブなシート オブジェクト

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getActiveSpreadsheet()

現在アクティブなスプレッドシートを返します。スプレッドシートがない場合は null を返します。

スプレッドシートのコンテキストで実行される関数は、この関数を呼び出すことで、対応する Spreadsheet オブジェクトへの参照を取得できます。

// The code below logs the URL for the active spreadsheet.
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl());

戻る

Spreadsheet - アクティブなスプレッドシート オブジェクト。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getCurrentCell()

アクティブ シート内のアクティブな範囲の 1 つで選択されている現在の(ハイライトされた)セルを返します。現在のセルがない場合は、null を返します。

// Returns the current highlighted cell in the one of the active ranges.
var currentCell = SpreadsheetApp.getCurrentCell();

戻る

Range - 現在のセル

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getSelection()

スプレッドシート内の現在の Selection を返します。

var selection = SpreadsheetApp.getSelection();
var currentCell = selection.getCurrentCell();

戻る

Selection - 現在の選択

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

getUi()

スクリプトがメニュー、ダイアログ、サイドバーなどの機能を追加できるようにするための、スプレッドシートのユーザー インターフェース環境のインスタンスを返します。スクリプトが操作できるのは、開いているスプレッドシートの現在のインスタンスの UI のみです。また、スクリプトがスプレッドシートにバインドされている場合に限ります。詳しくは、メニューおよびダイアログとサイドバーに関するガイドをご覧ください。

// Add a custom menu to the active spreadsheet, including a separator and a sub-menu.
function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('My Menu')
      .addItem('My menu item', 'myFunction')
      .addSeparator()
      .addSubMenu(SpreadsheetApp.getUi().createMenu('My sub-menu')
          .addItem('One sub-menu item', 'mySecondFunction')
          .addItem('Another sub-menu item', 'myThirdFunction'))
      .addToUi();
}

戻る

Ui - このスプレッドシートのユーザー インターフェース環境のインスタンス


newCellImage()

CellImage のビルダーを作成します。

戻る

CellImageBuilder - 新しいビルダー。


newColor()

Color のビルダーを作成します。

var rgbColor = SpreadsheetApp.newColor().setRgbColor("#FF0000").build();

戻る

ColorBuilder - 新しいビルダー。


newConditionalFormatRule()

条件付き書式ルールのビルダーを作成します。

// Adds a conditional format rule to a sheet that causes all cells in range A1:B3 to turn red
// if they contain a number between 1 and 10.
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var range = sheet.getRange('A1:B3');
var rule = SpreadsheetApp.newConditionalFormatRule()
    .whenNumberBetween(1, 10)
    .setBackground("#FF0000")
    .setRanges([range])
    .build()
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);

戻る

ConditionalFormatRuleBuilder - 新しいビルダー。


newDataSourceSpec()

DataSourceSpec のビルダーを作成します。

戻る

DataSourceSpecBuilder - 新しいビルダー。


newDataValidation()

データ検証ルールのビルダーを作成します。

var cell = SpreadsheetApp.getActive().getRange('A1');
var rule = SpreadsheetApp.newDataValidation()
    .requireNumberBetween(1, 100)
    .setAllowInvalid(false)
    .setHelpText('Number must be between 1 and 100.')
    .build();
cell.setDataValidation(rule);

戻る

DataValidationBuilder - 新しいビルダー。


newFilterCriteria()

FilterCriteria のビルダーを作成します。

戻る

FilterCriteriaBuilder - 新しいビルダー


newRichTextValue()

リッチテキスト値のビルダーを作成します。

// Sets cell A1 to have the text "Hello world", with "Hello" bolded.
var cell = SpreadsheetApp.getActive().getRange('A1');
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var value = SpreadsheetApp.newRichTextValue()
    .setText("Hello world")
    .setTextStyle(0, 5, bold)
    .build();
cell.setRichTextValue(value);

戻る

RichTextValueBuilder - 新しいビルダー。


newTextStyle()

テキスト スタイルのビルダーを作成します。

// Sets range A1:B3 to have red, size 22, bolded, underlined text.
var range = SpreadsheetApp.getActive().getRange('A1:B3');
var style = SpreadsheetApp.newTextStyle()
    .setForegroundColor("red")
    .setFontSize(22)
    .setBold(true)
    .setUnderline(true)
    .build();
range.setTextStyle(style);

戻る

TextStyleBuilder - 新しいビルダー。


open(file)

指定された File オブジェクトに対応するスプレッドシートを開きます。

// Get any starred spreadsheets from Google Drive, then open the spreadsheets and log the name
// of the first sheet within each spreadsheet.
var files = DriveApp.searchFiles(
    'starred = true and mimeType = "' + MimeType.GOOGLE_SHEETS + '"');
while (files.hasNext()) {
  var spreadsheet = SpreadsheetApp.open(files.next());
  var sheet = spreadsheet.getSheets()[0];
  Logger.log(sheet.getName());
}

パラメータ

名前説明
fileFile開くファイル。

戻る

Spreadsheet - スプレッドシート

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets

openById(id)

指定された ID のスプレッドシートを開きます。スプレッドシート ID は URL から抽出できます。たとえば、URL https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0 のスプレッドシート ID は &abct;abc1234567" です。

// The code below opens a spreadsheet using its ID and logs the name for it.
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openById("abc1234567");
Logger.log(ss.getName());

パラメータ

名前説明
idStringスプレッドシートの一意の識別子。

戻る

Spreadsheet - 指定された ID のスプレッドシート オブジェクト。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets

openByUrl(url)

指定された URL のスプレッドシートを開きます。URL が存在しない場合、またはユーザーに URL へのアクセス権限がない場合、スクリプト例外をスローします。

// The code below opens a spreadsheet using its id and logs the name for it.
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openByUrl(
    'https://docs.google.com/spreadsheets/d/abc1234567/edit');
Logger.log(ss.getName());

パラメータ

名前説明
urlStringスプレッドシートの URL。

戻る

Spreadsheet - 指定された ID のスプレッドシート オブジェクト。

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets

setActiveRange(range)

指定された範囲を active range として設定し、範囲内の左上のセルを current cell として設定します。

スプレッドシートの UI に、選択した範囲を含むシートが表示され、選択した範囲で定義されているセルが選択されます。

// The code below sets range C1:D4 in the first sheet as the active range.
var range = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('C1:D4');
SpreadsheetApp.setActiveRange(range);

var selection = SpreadsheetApp.getSelection();
// Current cell: C1
var currentCell = selection.getCurrentCell();
// Active Range: C1:D4
var activeRange = selection.getActiveRange();

パラメータ

名前説明
rangeRangeアクティブ範囲にする範囲。

戻る

Range - 新しい有効な範囲。


setActiveRangeList(rangeList)

指定された範囲のリストを active ranges として設定します。リストの最後の範囲は active range として設定されます。

// The code below sets ranges [D4, B2:C4] in the active sheet as the active ranges.
var rangeList = SpreadsheetApp.getActiveSheet().getRanges(['D4', 'B2:C4']);
SpreadsheetApp.setActiveRangeList(rangeList);

var selection = SpreadsheetApp.getSelection();
// Current cell: B2
var currentCell = selection.getCurrentCell();
// Active range: B2:C4
var activeRange = selection.getActiveRange();
// Active range list: [D4, B2:C4]
var activeRangeList = selection.getActiveRangeList();

パラメータ

名前説明
rangeListRangeList選択する範囲のリスト。

戻る

RangeList - 新しく選択された範囲のリスト

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setActiveSheet(sheet)

スプレッドシートに有効なシートを設定します。選択したシートが別のスプレッドシートに属している場合を除き、Google スプレッドシートの UI に表示されます。

// The code below makes the 2nd sheet active in the active spreadsheet.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[1]);

パラメータ

名前説明
sheetSheet新しいアクティブなシート。

戻る

Sheet - 新しいアクティブ シートを作成したシート


setActiveSheet(sheet, restoreSelection)

スプレッドシートにアクティブなシートを設定します。そのシート内で最近選択したシートを復元するオプションもあります。選択したシートが別のスプレッドシートに属している場合を除き、Google スプレッドシートの UI に表示されます。

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var firstSheet = spreadsheet.getSheets()[0];
var secondSheet = spreadsheet.getSheets()[1];
// Set the first sheet as the active sheet and select the range D4:F4.
spreadsheet.setActiveSheet(firstSheet).getRange('D4:F4').activate();

// Switch to the second sheet to do some work.
spreadsheet.setActiveSheet(secondSheet);
// Switch back to first sheet, and restore its selection.
spreadsheet.setActiveSheet(firstSheet, true);

// The selection of first sheet is restored, and it logs D4:F4
var range = spreadsheet.getActiveSheet().getSelection().getActiveRange();
Logger.log(range.getA1Notation());

パラメータ

名前説明
sheetSheet新しいアクティブなシート。
restoreSelectionBooleantrue の場合、新しいシートがアクティブになると、新しいアクティブなシートの新しい選択範囲が再び選択されます。false の場合、現在の選択内容を変更せずに新しいシートがアクティブになります。

戻る

Sheet - 新しいアクティブなシート

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets

setActiveSpreadsheet(newActiveSpreadsheet)

有効なスプレッドシートを設定します。

// The code below makes the spreadsheet with key "1234567890" the active spreadsheet
var ss = SpreadsheetApp.openById("1234567890");
SpreadsheetApp.setActiveSpreadsheet(ss);

パラメータ

名前説明
newActiveSpreadsheetSpreadsheetアクティブなスプレッドシートにするスプレッドシート。

setCurrentCell(cell)

指定したセルを current cell に設定します。

指定したセルがすでに選択範囲にある場合、その範囲が、現在のセルとしてのセルを含むアクティブ範囲になります。

指定したセルが選択した範囲に存在しない場合、既存の選択内容が削除され、そのセルが現在のセルおよびアクティブ範囲になります。

注: 指定する Range は 1 つのセルで構成する必要があります。1 セルに収めると例外がスローされます。

// The code below sets the cell B5 in the first sheet as the current cell.
var cell = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange('B5');
SpreadsheetApp.setCurrentCell(cell);

var selection = SpreadsheetApp.getSelection();
// Current cell: B5
var currentCell = selection.getCurrentCell();

パラメータ

名前説明
cellRange現在のセルとして設定するセル。

戻る

Range - 新しく設定された現在のセル

認可

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

  • https://www.googleapis.com/auth/spreadsheets.currentonly
  • https://www.googleapis.com/auth/spreadsheets