Open2

AppSheetで賞味期限管理アプリ作成

naoki-sunaoki-su

①spreadsheetを作成

spreadsheetで
商品名・JANコード・賞味期限・販売期限・値引基準・半額値引日(賞味期限 - 値引基準)
の項目の表(商品マスタ)を作成。
別シートに上記項目の商品をひとつだけ入力した物(入力用)を作成。

②AppSheetを立ち上げ、データでアプリ作成

③各項目の設定を変更

  • Primary Navigation を「入力画面(フォーム)」と「要チェック商品(カレンダー)」に変更。
  • 「入力画面」の ViewsFor this data を別シート(入力用)に変更。
  • 「商品マスタ」をMenu Navigationに変更し、Primary Navigationをスッキリさせる。
  • JANコード列のScan? にチェックを入れる。これによりJANコードスキャン機能が実装される。
  • 要チェック商品の ViewsStart timeEnd time半額値引日 に変更。これにより、カレンダーに値引日が表示される。
  • 要チェック商品のInitial Valueに、商品名・販売期限・値引基準の項目で下記のLOOKUP関数を設定。これにより、JANコードスキャンすることにより自動で各項目のデータ取得が可能。(入力の簡略化)
LOOKUP([_THISROW],"商品マスタ", "JANコード", "○○○○")

※○○○○は各項目名。

④値引き忘れ防止自動メール配信GASを設定

GASを起動し、下記コードを入力。

コードはこちら
function sendDiscountReminder() {
  // スプレッドシートとシートを取得
  const sheetName = '要チェック商品';
  const spreadsheet = SpreadsheetApp.openById('000000000000000000'); // スプレッドシートIDを指定
  const sheet = spreadsheet.getSheetByName(sheetName);

  if (!sheet) {
    Logger.log(`シート "${sheetName}" が見つかりません。`);
    return;
  }

  // データを取得
  const data = sheet.getDataRange().getValues();
  const today = new Date(); // 今日の日付
  const email = '0000000000000@gmail.com'; // 通知先のメールアドレス

  // ヘッダーを除いたデータをループ
  let message = '以下の商品が本日「半額値引日」に該当します:\n\n';
  let hasDiscount = false;

  for (let i = 1; i < data.length; i++) {
    const itemName = data[i][0]; // 商品名 (A列)
    const discountDate = data[i][5]; // 半額値引日 (F列)

    // 半額値引日が今日の場合
    if (discountDate && isSameDate(today, discountDate)) {
      hasDiscount = true;
      message += `- ${itemName}\n`;
    }
  }

  // メールを送信
  if (hasDiscount) {
    GmailApp.sendEmail(email, '半額値引日のお知らせ', message);
    Logger.log('メールを送信しました。');
  } else {
    Logger.log('本日「半額値引日」に該当する商品はありません。');
  }
}

// 日付を比較する関数
function isSameDate(date1, date2) {
  return (
    date1.getFullYear() === date2.getFullYear() &&
    date1.getMonth() === date2.getMonth() &&
    date1.getDate() === date2.getDate()
  );
}
naoki-sunaoki-su

試用結果

仕事場の部下に試用してもらった。
「操作に慣れてない手こずってるが、操作性自体は悪くない。慣れれば大丈夫そう」
「色があるともっと見やすくなるかも」

・色で視認性を向上させる。
・「操作は大丈夫」と言っていたが、タップ部分や字が小さかったりしていたので、なるべく大きいものに変更する