lisz-works

プログラミングと興味を貴方に

GAS→スプレッドシート 読み書きしてみた!

【スポンサーリンク】

Google Apps Script

Google Apps Scriptでの、簡単なスプレッドシートへのアクセス方法についてです。

これをベースにゴニョゴニョすれば、色々作れそうですね!

ちなみにご存知かと思いますが、スプレッドシートはGoogleの提供するExcelのようなアプリです。

Excelのようにデータをまとめたり、蓄積したり、集計したり、加工したり色々できます。

スプレッドシートの準備

読み書き実験用のスプレッドシートを用意します。

A列に適当にデータを入れただけです。

データ入力

ライブラリの読み込み

メニューの「リソース→Google の拡張サービス」を選択。

リソース→Google の拡張サービス

「Google Sheets API」を探します。

右側のスイッチを「ON」に切り替えます。
なんか表示崩れるんですよねココ……

Google Sheet APIをON

ONにすると

これらのサービスを Google API コンソールでも有効にする必要があります。

と出るので、「Google API コンソール」という文字リンクを選択。

「Google Cloud Platform」というページが表示されます。

Google Cloud Platform

「新しい API ライブラリへようこそ」画面が表示されます。

検索バーから「Sheets」で検索。

新しい API ライブラリへようこそ

すると「Google Sheets API」がヒットするので、選択します。

Google Sheets APIを選択

Google Sheets APIのページが表示されます。

ここの「有効にする」を選択!

有効化

有効にしてくれています。待ちましょう。

有効化中

しばらくすると、このようなページに来ます。

有効化完了

ここまで来たら、元のGoogle Apps Scriptのプロジェクトに戻ります。

ポップアップが表示されたままなので、「OKボタン」を押しましょう。

OKボタンを押す

一旦下準備はここで終わりです!

コードを記述する

コードを記述します。

サンプルコードはこちら。

function test_read_write() {
  var sheet_id = "シートID"
  var sheet_name = "シート名"

  // シートの取得
  var spreadsheet = SpreadsheetApp.openById(sheet_id);
  var sheet = spreadsheet.getSheetByName(sheet_name);

  // 読み込み
  Logger.log(sheet.getRange("a1").getValue());       // A1の値を取得
  Logger.log(sheet.getRange("a1:a4").getValues());   // A1:A4の値を取得
  var dat = sheet.getRange("a1:a4").getValues();
  Logger.log(dat[1]);                                // 範囲の場合、配列で返される

  // 書き込み
  sheet.getRange("b1").setValue("W B1");
}

シートIDの調べ方

操作したいスプレッドシートを開いてください。

URLはこのようになっています。

https://docs.google.com/spreadsheets/d/<シートID>/edit#gid=<シート番号>

この「/d/」~「/edit」の間にある、英数字の羅列。

これがシートIDです!

これをコピーして使えば、スプレッドシート名からオブジェクトを取得することができます!

実行してみる

実行すると、「承認が必要です」というポップアップが出てきます。

許可する

「許可を確認」を選択しましょう!

Googleアカウントの選択画面が出てくるので、自分のアカウントを選択します。

アカウントの選択

エラーのような画面が出ます……
が、ここは、「詳細」を押します。

詳細を押す

すると下ににょきっと表示される、「<プロジェクト名> (安全ではないページ) に移動」を押します。

許可ページに進む

すると「ようこそ」な画面が出ます。

安全じゃないって自称する割には、ウェルカムなページです……

「許可」を選択しましょう。

許可する

少し待つとポップアップは閉じられます。

元のプロジェクト画面で、再度実行してみましょう。

実行結果

エラーがなく終わったら、「Ctrl+Enter」でログ画面を表示!

こんな感じでログが表示されます!

実行結果ログ

[18-03-14 03:06:08:936 PDT] Data [18-03-14 03:06:08:937 PDT] [[Data], [データ1], [データ2], [データ3]] [18-03-14 03:06:08:939 PDT] [データ1]

書き込み結果の確認

B1セルを確認します……

かかれてるね!

書き込み結果

あとがき

これができると、なんだか色々できそうな気になってきます(笑)

最初読み書きできたときの「おっ!」感が大きかったですね。

GAS自体、初めて間もないからというのもあるかもしれませんが。

これからどんどん応用していきたいと思います!