見出し画像

【GAS】オンラインストア運営で活躍!カンマ区切りの値が入ったセル同士の整合チェック方法

Chat GPTを使ってGASを組んだので備忘録として残します。

EC-CUBE上でクーポンを登録しようとした時、クーポンの対象商品の登録方法が商品ID(数字)をカンマで区切って1つのテキストボックスに登録する方法でした。

膨大な数のクーポンのパターンを作成する必要があったので、IDだけだとどの商品なのかが一目で確認できなかったので、スプレッドシートに写真つきの商品一覧シートを作成して以下の順に処理を行い、正誤チェックを行いました。

1.チェックを入れた行の商品IDを一つのセルにカンマ区切りでまとめるシートを作成。
・商品一覧シートのA列にチェックボックスを設ける。
・チェックボックスが「True」の行の商品IDを抽出する関数を作成。

=filter(

2.GASによるオリジナル関数の作成。
・目的設定:クーポンに登録されているIDが希望の商品のIDと合致しているかの確認。対象となる各値の数字の順が異なるため、関数のみでの正誤チェックができない。そのため、1つのクーポンに複数商品を登録していることを利用して、IDの数字の合計数値が合致すれば正しいものとする。

・GASの作成
Chat GTP-4に以下のプロンプトを入力。

スプレッドシートで、D4セルの値「2082,1243,4,108,1668,123,111,377,378,8,114」を
カンマ区切りの数の合計値を出すための関数を教えて

回答は以下

スプレッドシートでは、特定の文字(この場合カンマ)で区切られたセルの各数値を合計するのは少々複雑です。
そのため、カスタムの関数を作成することをお勧めします。
以下に示すのはGoogleスプレッドシートにおけるカスタム関数を作成する方法です:

シートを開き、メニューから「拡張機能」を選択し、「Apps Scriptプロジェクト」をクリックします。
新しいウィンドウが開くと、カスタム関数を記述するためのエディタが表示されます。以下のコードを入力してください:

function SUM_COMMA_SEPARATED(cell) {
  var numbers = cell.split(",");
  var sum = 0;
  for (var i = 0; i < numbers.length; i++) {
    sum += Number(numbers[i]);
  }
  return sum;
}

上部メニューのディスクアイコンをクリックして保存し、プロジェクトに名前を付けます。
Apps Scriptエディタを閉じ、Googleスプレッドシートに戻ります。
ここで、新しく作成した関数を以下のように使用できます:

=SUM_COMMA_SEPARATED(D4)

ただし、この方法には注意点があります。Googleスプレッドシートのセルの値は通常文字列として
Apps Scriptに渡されるため、数字の列が文字列として提供されている場合のみこの方法が有効です。

数字として提供されている場合
(例えば、=2082,1243,4,108,1668,123,111,377,378,8,114のように入力された場合)、
この方法は期待した結果を返さない可能性があります。

なお、Excelの場合は自作の関数が必要ですが、
その説明は今回の範囲を超えています。この情報が役立つことを願っています。

・GASにコピペして保存

3.実行
カンマ区切りのセルを指定するように、

=SUM_COMMA_SEPARATED(D4)

を入力したところ、しっかりと合計数値が出ました。

念の為、計算機で足し算を行ったみましたが、合致してました。

カンマ区切りの数字の羅列やChat GPTでGASを作成する上でのご参考になれば幸いです。

この記事が気に入ったらサポートをしてみませんか?