Google Apps Script スプレッドシート編 初心者向け

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

どもども、平社員の龍ちゃんです!今回は、前回の「Google Apps Script導入」に引き続きGASのお話です。以下の図は、GASを用いてやっていることで使用した図です。3つの真ん中に鎮座している、スプレッドシートを使用したデータベース構築の基本部分について紹介していきます。

データベース

まずは、ソースコードと結果だけお話していこうと思います。ソースとしてはあまり意味がないですけど、ソースコードだけをコピーして使ってみてください。公式リファレンスも置いておきます。

ソースコード結果

今回用意するものは、Googleアカウント・適当なスプレッドシート・GASのファイルの3つです。スプレッドシートには適当に書き込んでおきましょう。GASのソースコードは以下です。注意点です!コピーをする際は「const file = SpreadsheetApp.openById(“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”)」のx部分を対象とするスプレッドシートのものに書き換えてください。

function myFunction() {
  // ファイル取得
  const file = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
  const sheet = file.getSheetByName("シート1")
  
  // 値の取得 最終行・列
  const lastRow = sheet.getLastRow();
  const lastCol = sheet.getLastColumn();
  Logger.log(lastRow, lastCol)

  // 値の操作
  // 一個取得
  const A1 = sheet.getRange(1,1).getValue()
  Logger.log(A1)
  // 複数取得
  const allData = sheet.getRange(1,1,lastRow, 1).getValues()
  Logger.log(allData)

  // 値の書き込み
  sheet.getRange(lastRow+1,1).setValue("書き込み")
  // 値の複数書き込み
  sheet.getRange(1,lastCol+1,lastRow,1).setValues(allData)

  // ちょっとした遊び
  const sentence = [... new Set(allData)].join("")
  Logger.log(sentence)

}

ソースコード説明

GASでのファイルを扱うための順番
まず処理の流れを追っていきましょう。対象となるファイルとシートを指定して指令を出すという簡単な流れです。やっていることは単純ですが、ファイルを指定しないと、シートの指定はできません。同様に指令は、ちゃんとターゲットを補足しないと出すことができません。

ファイル取得

ここで説明をするのは、2つのコマンドです。このフェーズでは、指定するファイルといじるシートを選定します。「ID」「name」は変動する値になっています。

const file = SpreadsheetApp.openById("<ID>")
const sheet = file.getSheetByName("<シート名>")

IDの検索方法は、対象とするスプレッドシートを開いているページに行きURLを見ることです。以下の図の赤枠で囲っている部分の文字列をコピーして、文字列として代入することで機能します。

URLからファイルのIDを見つける方法

nameの検索方法は、対象とするスプレッドシートのタブ名を見ることです。タブは図のように下側にあります。ここは自由に変更できますが、日本語でも大丈夫ですので安心して代入してください。

nameを探すときに見る場所

値の操作

ここで説明するのは、値を操作する7つのコマンドです。

最終行・列の取得

まずは、データベースとして使用する場合でよく使用するコマンドです。以下の2つは、それぞれ最終行と列を取得することができます。「Sheet」の部分は、前章で説明したシートの取得を変数として引っ張っています。

const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
Logger.log(lastRow, lastCol)

値の入力・読み込み

値を扱う場合の処理の順番

次に説明をするのは、値を書き込んだり読み込んだりするコマンドです。いきなりセルの指定といわれてもわからないと思うので図を出します。本章の一番最初で説明したとおりに、指示を出す順番は重要です。指令を出すためには、範囲指定が重要となります。その範囲指定のために使用するコマンドが「Sheet.getRange(x,y)」です。一応、「x,y」と書いていますが最大4つの引数を登録することができます。ここの詳細な説目は、使ってみることで実感できます。リファレンスのページを置いておきますね。

読み込みの場合も書き込みの場合もセルの指定から始めます。ここで注意点「セルの指定はよく確認しよう」です。スプレッドシートの操作がうまくいかない場合、原因の8割がセルの指定ミスです。

// 値の操作
// 一個取得
const A1 = sheet.getRange(1,1).getValue()
Logger.log(A1)
// 複数取得
const allData = sheet.getRange(1,1,lastRow, 1).getValues()
Logger.log(allData)

// 値の書き込み
sheet.getRange(lastRow+1,1).setValue("書き込み")
// 値の複数書き込み
sheet.getRange(1,lastCol+1,lastRow,1).setValues(allData)

基本操作なので、忘れないように画像を保存しておくといいことあるかもしれません。

終わりに

さて今回は、「GASを利用したスプレッドシート操作」について話を進めていきました。この説明は、今後の開発に必要となるのでログとして残しました。これで、データベースとしてスプレッドシートを利用することができますね。開発の具体的な流れは、こちらのライトブログでも合わせて報告を入れていきますので、ぜひご一読ください。

いかにシリーズをまとめています。

ではでは!またよろしくお願いします( *´艸`)。

アバター画像
About 龍:Ryu 107 Articles
2022年入社で主にフロントエンドの業務でTailwindと遊ぶ日々。お酒とうまいご飯が好きで、運動がちょっと嫌いなエンジニアです。しゃべれるエンジニアを目指しておしゃべりとブログ執筆に注力中(業務もね)//
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる