7店舗のスプレッドシートを GAS で集約するなら、列は位置ではなく見出しの名前で探す

7店舗のスプレッドシートを Google Apps Script(GAS)で1つに集約しています。列の位置で読むと、列を1つ足しただけで数字がずれ、エラーにもなりません。見出しの名前で列を探す作りと、設定のシート、毎晩の書き直しの記録です。

「列は見出しの名前で探す」の文字と、7店舗・設定のシート・毎晩書き直しの札

Google Apps Script(GAS。スプレッドシートなどを動かす Google のプログラム)で複数のスプレッドシートを集約する時は、列を位置(C列、F列)ではなく、見出しの名前で探すのが答えです。列の位置で読むと、誰かが列を1つ足しただけで右の数字が全部ずれ、しかもエラーにならないからです。

私たちのグループでは、7つの店舗がそれぞれ自分のスプレッドシートで、日々の記録を付けています。これを Google Apps Script(GAS。Google のスプレッドシートなどを動かすプログラム)で1つにまとめ、全店の数字を並べて見られるようにしています。

まとめる仕組みを作る時に、一番気をつけたのは「列の探し方」です。列の位置で読むと、店舗の誰かが列を1つ足しただけで、数字がずれてしまいます。この記事は、見出しの名前で列を探す作りにした理由と、ほかに決めたことの記録です。

7店舗のシートを、集約の GAS が見出しの名前で列を探して読み、まとめた表を毎晩全部書き直す。集客の経路の分け方は、設定のシートで決める
集約の流れ。列は位置ではなく、見出しの名前で探す

GAS で列の位置で読むと、何が起きるか

GAS でシートを読む時、いちばん簡単なのは「C列が日付、F列が金額」のように、列の位置を決め打ちにすることです。

方眼の紙の上に、水色の鉛筆が置かれた写真
列は、位置ではなく見出しの名前で探す(イメージ写真)

7店舗もあると、すべての店舗のシートの形を、ずっと同じに保ってもらうのは現実的ではありません。

列を位置で読むと、メモの列を1つ足しただけで金額の列に別の値が入る。見出しの名前で探すと、正しい金額を読める、という比較の図
メモの列を足した時の、2つの読み方の違い

見出しの名前で、列を探す

Google Apps Script見出しの名前で列を探す(仕組みが分かる短い見本)
function readRows(sheet, names) {
  const values = sheet.getDataRange().getValues();
  const header = values[0].map(String).map(s => s.trim());
  const index = {};
  for (const name of names) {
    const i = header.indexOf(name);
    if (i < 0) throw new Error(sheet.getName() + ' に「' + name + '」の列がありません');
    index[name] = i;
  }
  return values.slice(1).map(row => {
    const obj = {};
    for (const name of names) obj[name] = row[index[name]];
    return obj;
  });
}
Apps Script の実行ログの再現。店舗C に「金額」の列がありません、というエラーで止まっている
見つからない時は、どの店舗のどの列かを出して止める

集客の経路の分け方は、設定のシートで決める

お客様がどこから来たか(集客の経路)を、どう分けて数えるかも決める必要があります。

設定のシートの再現。店舗のシートに書かれた言葉と、数える集客の経路の対応表
集客の経路の分け方は、設定のシートに書く

毎晩、全部を書き直し、変わったところを記録する

まとめた表は、毎晩、全部を読み直して書き直しています。前の日の結果に差分だけを足していく作りにはしませんでした。

夜の机に置かれた、ランプとノートパソコンの写真
毎晩、全部を書き直して、変わったところを記録する(イメージ写真)
集約の表を毎晩全部書き直す理由。差分だけ足す作りだと昔の記録が直された時に反映されないが、毎晩全部書き直せば翌朝には直したあとの数字になり、前の晩との変更も記録に残る
全部書き直せば、過去の直しも反映される

あわせて、前の晩の結果と比べて、どこが変わったかを記録に残しています。数字が急に変わった時も、どの記録が直されたのかを、あとから追えます。

まとめ

7店舗のスプレッドシートを GAS で集約するなら、列は位置ではなく見出しの名前で探す:要点のまとめ。複数のスプレッドシートをまとめる時、列の位置で読むと、列を足しただけで数字がずれる
この記事の要点
  • 複数のスプレッドシートをまとめる時、列の位置で読むと、列を足しただけで数字がずれる
  • 1行目の見出しの名前から、列の場所をその都度探す
  • 集客の経路の分け方は、設定のシートに書き、プログラムを直さずに変えられるようにする
  • 毎晩全部を書き直し、変わったところを記録する

この集計の画面を、GAS からレンタルサーバーに移した話は、こちらに書いています。

「画面だけをサーバーへ」の文字と、GAS はそのまま・HTML と PHP・しばらく並べて動かすの札業務の自動化GAS の Web アプリが遅い時は、画面だけをレンタルサーバーに移すGAS の Web アプリ(GAS で作れる Web ページ)の表示が遅い時は、集約の GAS とスプレッドシートを残し、画面だけをレンタルサーバーの HTML と PHP に移す手があります。いきなり切り替えず、両方を並べて動かした進め方の記録です。

この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。

  • Google Apps Script
  • GAS
  • スプレッドシート
  • 集約
  • 店舗管理

関連する記事

この記事に関連するサービス・アプリ

ブログの一覧へ