Chapter 7 [演習課題⑥]生成AIでプログラミングしてみよう

学習時間の目安1時間

生成AIは、プログラミングのソースコードを書かせることも可能です。

本演習では生成AIでGoogle Apps Script(GAS)を実際に書いてみます。GASを活用できれば、多くの手作業に依存したタスクを効率化し、時間を節約することができます。例えば、Googleスプレッドシートのデータを基に定期的にレポートを生成したり、フォームの回答を集計して分析結果を自動的に共有したりするような作業が、スクリプト一つで自動化できるようになります。

Google Appsとは:https://workspace.google.co.jp/intl/ja/products/apps-script/

JavaScriptやマクロを利用できる人であれば、GASを利用するハードルは高くはありません。しかし、生成AIを活用することで簡単にGASを動かすためのコードを生成することができます。

これは、プログラミングが苦手な方や小規模チームでも、自分たちの作業を簡素化し、効率化するカスタムスクリプトを簡単に作成できることを意味します。結果として、日々の業務で発生する煩雑なタスクを自動化することにより、時間と労力を大幅に節約できます。

ただし、ChatGPTにGASを書かせてもエラーが発生することがあり、解決方法をChatGPTに聞くこともできますが、GASに関する多少の知識がある方が、解決速度が速くなり、プロンプトの精度やChatGPTへの質問の精度も向上します。

スプレッドシートでGASを利用する方法

1. 新しいスプレッドシートを作成 2. スプレッドシートのツールバー「拡張機能」→「Apps Script」を選択する (Googleスプレッドシートのバージョンが古い場合は、「拡張機能」の項目が存在しないため、ツールバーの「ツール」→「スクリプトエディタ」を選択すると、Apps Scriptを開くことができます。)

「Apps Script」を選択すると、新しいウィンドウが開きます。ここがGoogle Apps Scriptの開発環境になります。ブラウザに「無題のプロジェクト」のタブが新規追加されます。

初めて開いた場合は、以下のようなコードが自動的に生成されます。

この中にスクリプトを記載することで、処理を実行することができるようになります。

例:GASによる領収書の自動作成

想定シーン

Google Apps Script(GAS)を利用した簡単な自動化の例として、Googleスプレッドシートに記載してある入力用のデータをもとに、領収書を一括で作成するスクリプトを作成してみます。

▼サンプルとして以下のファイルを用意しています。このGoogleスプレッドシートをご自身のGoogleドライブにコピーしてください。

生成AIでプログラミング(領収書)

このシートでは、「入力用データ」のシートに、以下の内容が記載されています。

上記データを基に、領収書を一つずつ作成するのが手間であるため、以下「サンプル」シートのフォーマットの文言を置換し、入力用データの内容に置きかえ、一括で領収書を作成したいと思います。

プロンプト作成時のテクニック

  • 明確な目的の提示をすること
  • プログラムで実行する手順の明確化をすること
  • 利用するデータの構成を記載すること
プロンプト#ゴール
Googleスプレッドシートの#入力用データに記載したデータをもとに、#サンプルをコピーしたシートに記載された文言を全て置換するGASを作成する。

#手順実行のプロセス
– [C1] Googleスプレッドシートのシート名「サンプル」のシートのコピーを作成する。
– [C2]コピーで作成したシート名は”領収書”+連番とする。
– [C3]Googleスプレッドシートのシート名「入力用データ」に記載したヘッダー”company”、”name”、”price”、”item”に紐づくデータをもとに、[C2]で作成したGoogleスプレッドシートに記載された”company”、”name”、”price”、”item”の文言を全て置換する。
– [C4][C2]で作成したGoogleスプレッドシートに記載された”date”には現在日付を入力する。

#入力用データ
##ヘッダー情報
Googleスプレッドシート「入力用データ」のA1のヘッダーにcompany
Googleスプレッドシート「入力用データ」のB1のヘッダーにname
Googleスプレッドシート「入力用データ」のC1のヘッダーにitem
Googleスプレッドシート「入力用データ」のD1のヘッダーにprice

##データ情報
ヘッダーの下部に複数行でデータが格納されている。

#サンプル
サンプルのシートの中で、入力データに置き換えたい箇所は、それぞれ、”company”、”name”、”price”、”item”の文言が記載されている。
ChatGPTの出力例以下のGoogle Apps Script (GAS)を作成し、Googleスプレッドシートで指定された要件を満たす自動化プロセスを実装します。

function createAndReplaceSheets() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var inputSheet = ss.getSheetByName(‘入力用データ’);
 var sampleSheet = ss.getSheetByName(‘サンプル’);
 var data = inputSheet.getDataRange().getValues();
 var headers = data[0];
 var now = new Date();
 var dateString = Utilities.formatDate(now, Session.getScriptTimeZone(), ‘yyyy/MM/dd’);

 for (var i = 1; i < data.length; i++) {
  var newSheet = sampleSheet.copyTo(ss);
  newSheet.setName(‘領収書’ + i);
  var range = newSheet.getDataRange();
  var sheetValues = range.getValues();

   for (var row = 0; row < sheetValues.length; row++) {
    for (var col = 0; col < sheetValues[row].length; col++) {
     var cellValue = sheetValues[row][col];       

     if (typeof cellValue === ‘string’) {
      cellValue = cellValue.replace(‘company’, data[i][headers.indexOf(‘company’)]);
      cellValue = cellValue.replace(‘name’, data[i][headers.indexOf(‘name’)]);
      cellValue = cellValue.replace(‘item’, data[i][headers.indexOf(‘item’)]);
      cellValue = cellValue.replace(‘price’, data[i][headers.indexOf(‘price’)]);
      cellValue = cellValue.replace(‘date’, dateString);          

      sheetValues[row][col] = cellValue;
    }
   }
  }

  range.setValues(sheetValues);
 }
}

このスクリプトは次の手順を実行します:
1. 現在のスプレッドシートのインスタンスを取得します。
2. 「入力用データ」シートと「サンプル」シートを取得します。
3. 「入力用データ」シートの全データを取得し、ヘッダー情報を読み込みます。
4. 現在の日付を取得し、指定のフォーマットに変換します。
5. 「入力用データ」シートのデータ行を1行ずつ処理します。
6. 各データ行ごとに「サンプル」シートのコピーを作成し、新しいシート名を「領収書」+連番とします。
7. コピーされたシート内の全てのセルをチェックし、指定された文言(”company”、”name”、”price”、”item”、”date”)を対応するデータで置換します。
8. 置換後のデータをシートにセットします。

このスクリプトをGoogleスプレッドシートのスクリプトエディタに貼り付け、保存して実行することで、指定された自動化が実現できます。

作成したスクリプトを実際に動かしてみます。

①拡張機能→Apps Scriptを選択

②プロジェクト名を領収書作成スクリプトに変更。ソースコードをChatGPTで出力されたものに変更します。

③プロジェクト名を保存します。

④実行します。

Preview

⑤権限を確認を選択します。

⑥アカウントの選択画面が表示されるので、自身のアカウントを選択します。

⑦アラート画面が表示されるので、詳細を選択します。

⑧領収書作成スクリプトに移動

⑧許可を選択する。

⑨実行が開始される。

⑩実行が完了する。

上記が完了すると、入力用データをもとに、一括で領収書が作成されます。

スクリプトを実行した結果、実行結果が正しく出力されなかった場合、同じプロンプトを再実行することでソースコードが修正されるので何回か試してください。

スクリプトは、下記のように貼り付けて実行させます。

[演習課題⑥]生成AIで領収書作成スクリプトに追加機能を実装しよう

領収書作成スクリプトに追加機能を実装してみましょう。

【想定シーン】 あなたは入力用データの一覧から領収書を作成する業務を実施しています。 company(会社名)、name(宛名)、price(値段)、item(商品名)、date(発行日)を自動で入力し、一括で作成するスクリプトを作成していましたが、新たに、領収書No.の欄も自動で入力する要件が必要だと判明しました。生成AIとGASを利用して、業務を効率化してみてください。

【課題の実施手順】

  1. 教材で利用した「入力用データ」シートにnumberの列を追加し、サンプルのNo.に自動で入力される機能を追加してください。 ▼ファイルを再掲します。ご自身のGoogleドライブにコピーしてご利用ください。

生成AIでプログラミング(領収書)

「入力用データ」シート

「サンプル」シート

  1. 領収書作成スクリプトをChatGPTを用いて生成してください。
  2. スクリプトを実行してみてください。

スクリプトを実行した結果、実行結果が正しく出力されなかった場合、同じプロンプトを再実行することでソースコードが修正されるので何回か試してください。何回試しても問題が発生した場合はプロンプトを再考してみてください。

【提出方法】 演習課題の入力先シート:「提出ファイル」>「Lesson7_[演習課題⑥]生成AIで領収書作成スクリプトに追加機能を実装しよう」 提出方法:Slackでメンターをメンションの上、上記シート右上に記載の「提出テンプレート」とあるセルをコピーし、提出してください。

コメント