Google Apps Scriptでの、簡単なスプレッドシートへのアクセス方法についてです。
これをベースにゴニョゴニョすれば、色々作れそうですね!
ちなみにご存知かと思いますが、スプレッドシートはGoogleの提供するExcelのようなアプリです。
Excelのようにデータをまとめたり、蓄積したり、集計したり、加工したり色々できます。
スプレッドシートの準備
読み書き実験用のスプレッドシートを用意します。
A列に適当にデータを入れただけです。
ライブラリの読み込み
メニューの「リソース→Google の拡張サービス」を選択。
「Google Sheets API」を探します。
右側のスイッチを「ON」に切り替えます。
なんか表示崩れるんですよねココ……
ONにすると
これらのサービスを Google API コンソールでも有効にする必要があります。
と出るので、「Google API コンソール」という文字リンクを選択。
「Google Cloud Platform」というページが表示されます。
「新しい API ライブラリへようこそ」画面が表示されます。
検索バーから「Sheets」で検索。
すると「Google Sheets API」がヒットするので、選択します。
Google Sheets APIのページが表示されます。
ここの「有効にする」を選択!
有効にしてくれています。待ちましょう。
しばらくすると、このようなページに来ます。
ここまで来たら、元のGoogle Apps Scriptのプロジェクトに戻ります。
ポップアップが表示されたままなので、「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自体、初めて間もないからというのもあるかもしれませんが。
これからどんどん応用していきたいと思います!