今回はGoogle Apps Script(GAS)を使ってスプレッドシートを外部から操作してみることにします。

ネットショップもどきで購入ボタンをおすと在庫管理のデモのセルの値が減少していきます。

スプレッドシートをGASで操作する

まずスプレッドシートを作成します。そして一番上のメニューから[ツール] ⇒ [スクリプトエディタ]を選択します。そして[コード.gs]にやりたいことを書けばよいのですが、まずは以下のように書きます。

スプレッドシートのデータを取得

ここでの引数は、取得を開始する行番号、取得を開始する列番号、取得したい行数、取得したい列数です。

シートの状態はこうなっています。

これを保存して実行する関数をShowResult()と指定してから実行ボタンをおすと

と表示されます。

セルをひとつだけ特定してその値を取得したいというのであれば

実行結果は 86 となります。

現在時刻を取得

現在時刻を示す文字列が必要なら

実行結果は 2021-08-10: 21-32-20 となります。この記事を作成しているときはこの時間でした。

セルの値を1減らす

以下は指定したセルの値を1減らします。

実行結果は B2 = 85 となります。値が1減りました。

今回使うのはこれくらいです。では本題にはいりましょう。外部から操作するにはどうすればいいのでしょうか?

スプレッドシートを外部から操作する

まずdoPostという関数を作成します。結果はJSONで返します。引数が設定されていない場合は不正な引数が渡されたことがわかるようにします。これで実行結果は{“value”:”OK”}、{“value”:”Illegal parameter”}のどちらかになります。

デプロイするときの注意点

次に右上にあるデプロイのボタンを押します。新しいデプロイ、デプロイを管理、デプロイのテストの3つのメニューが表示されますが、最初は[新しいデプロイ]を選択します。そのあと表示される左側のメニューの上のほうにある歯車のようなマークをクリックして[ウェブアプリ]を選択します。

そのあと[説明]の部分には自分ああとで見たときにわかりやすい説明文を書き、[次のユーザーとして実行]の部分は[自分]を選択、[アクセスできるユーザー]は[全員]を選択します。そのあと[デプロイ]をクリックします。このとき[ウェブアプリ url]が発行されるのでメモしておきます。

コードを修正した場合は[デプロイの管理] ⇒ [新バージョン]を選択しないと反映されません。知らないと気づきにくいハマりどころとなります。

在庫管理をする

外部からGASを使うために外部にHTMLファイルを作成します。ボタンがクリックされると購入されたことになり、在庫が1減ります。

そしてGASはこのように書きます。書き直したら[デプロイ] ⇒ [デプロイの管理]を選択して鉛筆のようなマークをクリック、バージョンを新バージョンにします。これをやらないと変更が反映されません。

これでHTMLにアクセスして購入ボタンを押してみましょう。すると{“value”:”OK”}と表示され、在庫が1減ります。ところが商品5に対応する記述はToBuy関数のなかにはないので、{“value”:”Illegal parameter”}と表示されます。

在庫管理のデモ

ネットショップもどき