グーグルのAI「Bard」でGASのコード生成が可能に!生成したスクリプトを検証

Googleが開発している生成系AIであるBardが2023年4月21日よりコード生成やデバッグにも対応しました。

20以上のプログラミング言語に対応し、Bardにコード生成を依頼するとコードを提示してくれます。

そこでGoogle Apps Script(GAS)のコード生成やデバッグをBardにリクエストして、出てきたコードを検証してみました。

生成AI Bardが日本で利用可能に

GoogleがChatGPTに対抗して開発している生成系AIのBardが2023年4月に日本からでも利用できるようになりました。

Bardは元々英語圏のアメリカとイギリスの2カ国でのみ利用可能で、日本からbard.google.comにアクセスしても対象外と表示されていました。

しかし、Bardが公開されて約1ヶ月が経過し、利用できる範囲が拡大した結果、日本でもBardが使えるようになりました。

※2023年4月時点では日本語には対応しておらず、投稿できるのは英語のみです。

Bardがプログラミングのコード生成にも対応

Googleの生成系AIであるBardで、アメリカ時間2023年4月21日にアップデート情報がありました。

Help with codingとプログラミング言語の支援に関するアップデートです。

2023年4月21日(アメリカ時間)にBardはアップデートがあり、コード生成機能が追加

日本語に翻訳したところ、コーディングの支援機能が追加されたとのことでした。

2023年4月21日(アメリカ時間)にBardに追加実装されたコード生成機能に関するアップデート情報の日本語訳

2023.04.21
コーディングのヘルプ

内容: Bard は、20 以上のプログラミング言語でのコーディングを支援できるようになりました。Bard が Python コードを生成すると、Google Colab でコードを直接エクスポートしてテストすることもできます。C++、Go、Java、JavaScript、Python、TypeScript、さらには Google スプレッドシート関数などの言語について、Bard にヘルプを求めてみてください。
理由: 初心者から経験豊富なエンジニアまで、あらゆるレベルのプログラミング経験を持つ人々が、コードの生成とエクスポート、コードのデバッグ、コードの仕組みの説明など、コーディングを支援するために Bard を使用できます。すべてのコードを信頼する前に、慎重にテストし、エラー、バグ、脆弱性がないか確認してください。

下書きに多様性を加える

  • 内容: 他のドラフトを表示すると、より幅広いオプションが表示され、それぞれがより明確になります。
  • 理由: より幅広い範囲のより明確な下書きは、創造的な探求を拡大するのに役立ちます。

Googleのアップデート情報によると、JavaやJavascript、さらにはPythonやスプレッドシート関数についてのサポートができるようになりました。

GoogleのクラウドIDEであるColabですぐに実行させることも可能です。

ただし、生成されたコードが正常に稼働するかは担保しておらず、利用者がテストしてエラーやバグがないか確認する必要があります。

Bardでコード生成をさせる方法

Bardを使ってコード生成させる方法はとても簡単です。

どのプログラミング言語でどういった処理のコードを書いてほしいか、Bardの入力プロンプトに英語で投稿します。

前述した通り、現在のBardはChatGPTのように日本語入力には対応していません。

そのため、DeepLやGoogle翻訳を使い、日本語で書いたBardへのリクエストの文章を英語に翻訳して投稿するのがおすすめです。

※英語で問題なくBardへのリクエストが書くことができる場合は、直接書いても問題ありません。

GASのコードをBardが生成

実際にBardを使ってプログラミング言語のコードを生成させる実験をしてみました。

対象のプログラミング言語は、Autowokerのブログでもよく取り上げているGoogle Apps Script(GAS)です。

まず、GASで最もよく利用するGoogleスプレッドシートからシート内の特定範囲セルを読み込むコードをリクエストしてみました。

「スプレッドシートを読み込み、A1からC5セルの値を2次元配列で取得するGoogle Apps Scriptのコードを書いてください。」

上記の日本語文章を以下の英語にDeepLで翻訳して、Bardに投稿してみます。

「Write a Google Apps Script code that a spreadsheet and retrieves the values of cells A1 to C5 in a two-dimensional array.」

生成系AI Bardを使ってGoogle Apps Script(GAS)でスプレッドシートのセルを読み取るコードを生成

そのままではBardからのリクエストも英語になってしまっているので、Chromeブラウザの翻訳機能で日本語に変換します。

Bardにスプレッドシートのセルを読み取るGoogle Apps Script(GAS)のコード生成をリクエストした結果の日本語訳
function getValues() {
  // Get the spreadsheet.
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // Get the range of cells.
  var range = spreadsheet.getRange("A1:C5");

  // Get the values of the cells.
  var values = range.getValues();

  // Return the values in a two-dimensional array.
  return values;
}

セルの値を2次元配列として取得するGASコードに加えて、コードの実行方法についても解説文章があります。

変数の宣言方法がletやconstではなく、varが使われているなど気になる点はありますが、問題なく実行できるコードが生成されています。

Bardでセルを書き込むGASコードを実行できるか検証

続いてGoogleスプレッドシートのセルに値を書き込むGoogle Apps Script(GAS)のスクリプトを生成してもらいました。

Googleスプレッドシートのセルに値を書き込むGoogle Apps Script(GAS)のコードをBardが生成
function writeTestScores() {
  // Get the spreadsheet object.
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // Get the sheet object.
  var sheet = spreadsheet.getActiveSheet();

  // Get the range of cells to write the test scores to.
  var range = sheet.getRange("A1:B3");

  // Write the test scores to the range of cells.
  range.setValues([
    ["Japanese", 90],
    ["Math", 98],
    ["Science", 95]
  ]);
}

生成されたGASのコードがスクリプトエディタでエラーが発生せずに実行できるか検証してみました。

1.Bardが生成したコードスニペットの右下に表示されるコピーのアイコンでコードをコピーします。

2.スプレッドシートに紐づくコンテナバインドなGASスクリプトなので、スプレッドシートのメニューから「Apps Script」でプロジェクトを開きます。

Googleスプレッドシートの拡張機能からGoogle Apps Script(GAS)のスクリプトエディタを起動

3.GASのスクリプトエディタが起動するので、Bardが生成したGASのコードを貼り付けて保存し、writeTestScore関数を実行します。

Bardが生成したGoogle Apps Script(GAS)のコードが正常に実行できるか、スクリプトエディタに貼り付けて実行

※初回実行時はスクリプト承認が必要になります。

4.コードが正常に実行されたので、スプレッドシートに戻ると想定通りセルに値が書き込まれています。

Bardが生成したスプレッドシートのセルに値を書き込むGoogle Apps Script(GAS)コードを実行した結果

英語に翻訳してしまっている関係もありますが、国語、数学、理科の3教科の点数がきちんとスプレッドシートに出力されています。

そのため、スプレッドシートの読み込みや書き込みといった簡単なGASコードであれば、Bardに依頼すれば、コードを生成してくれます。

GASのコードデバッグも可能か検証

生成系AIのBardを使えば、実行可能なGoogle Apps Script(GAS)のコードを生成してくれることは確認できました。

次にエラーが出てうまく動かないGASコードのデバッグができるか試してみました。

プログラミングにおいては、コードを書いてみたものの、実行するとエラーしてしまうことが多いです。

そうしたエラーするGASのスクリプトをBardに提示して、間違っている箇所と修正方法を教えてもらえると、デバッグが効率化できます。

今回はGASのsetValuesメソッドがエラーする初歩的なコードを検証してみます。

function myFunction() {
  const array = ['strawberry', 'apple', 'mandarin'];
  SpreadsheetApp.getActiveSheet().getRange(1,1,3).setValues(array);
}

上記のGASコードのどこでエラーしているか、どのように修正すればよいかBardに質問してみます。

Googleの生成AI「Bard」にエラーがあるGoogle Apps Script(GAS)のコードの間違っている部分のデバッグを依頼

※Bardへの投稿プロンプトと応答結果を日本語に翻訳した結果が以下です。

Googleの生成AI「Bard」にエラーがあるGoogle Apps Script(GAS)のコードの間違っている部分のデバッグを依頼した投稿と応答結果を日本語訳

setValuesメソッドの引数は2次元配列を指定すべきなのに、1次元配列の変数になっているとエラー原因を特定してくれました。

さらに、それに対する対処方法について、2次元配列に変更するか、offsetメソッドを使う案を提示するとともに、修正コードも提案してくれました。

function myFunction() {
  const array = [
    ['strawberry'], 
    ['apple'], 
    ['mandarin']
  ];
  SpreadsheetApp.getActiveSheet().getRange(1,1,3).setValues(array);
}

Bardが提示した修正版のGASコードを実際に実行したところ、エラーが解消して正常に実行できました。

このようにBardはGoogle Apps Script(GAS)では簡単なコードであれば、実行できるスクリプトを生成できるのに加え、エラー原因と修正方法についても教えてくれます。

あまりGASが詳しくない人でもBardを活用すれば、エラーにハマった時でもどうすれば解消できるか提示してくれるので、とても有益です。

まとめ・終わりに

今回、Googleが提供する生成AIであるBardにコード支援機能が実装されたので、Google Apps Script(GAS)でコード生成とデバッグを検証してみました。

Bardが生成したスプレッドシートの読み込みと書き込みに関する簡単なGASのコードを、実際にスクリプトエディタから実行したところ、正常実行できました。

さらに、誤りを含んでいるコードで誤っている箇所と修正方法もBardにデバッグの質問をしたところ、正しい修正方法が提示されました。

Bardを使えば、GASのコーディング支援機能として、最初のスクリプト生成やエラー対応など効率化が期待できそうです。

ただ、今回は簡単なコードだったので、すべて問題ありませんでしたが、複雑なコードの場合は誤りを含んでいる可能性もあるので、必ず実行して動作するかチェックしましょう。