Open2
AppSheetで賞味期限管理アプリ作成
①spreadsheetを作成
spreadsheetで
商品名・JANコード・賞味期限・販売期限・値引基準・半額値引日(賞味期限 - 値引基準)
の項目の表(商品マスタ)を作成。
別シートに上記項目の商品をひとつだけ入力した物(入力用)を作成。
②AppSheetを立ち上げ、データでアプリ作成
③各項目の設定を変更
-
Primary Navigation
を「入力画面(フォーム)」と「要チェック商品(カレンダー)」に変更。 - 「入力画面」の
Views
のFor this data
を別シート(入力用)に変更。 - 「商品マスタ」を
Menu Navigation
に変更し、Primary Navigation
をスッキリさせる。 -
JANコード
列のScan?
にチェックを入れる。これによりJANコードスキャン機能が実装される。 - 要チェック商品の
Views
のStart time
とEnd time
を半額値引日
に変更。これにより、カレンダーに値引日が表示される。 - 要チェック商品のInitial Valueに、商品名・販売期限・値引基準の項目で下記のLOOKUP関数を設定。これにより、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()
);
}
試用結果
仕事場の部下に試用してもらった。
「操作に慣れてない手こずってるが、操作性自体は悪くない。慣れれば大丈夫そう」
「色があるともっと見やすくなるかも」
↓
・色で視認性を向上させる。
・「操作は大丈夫」と言っていたが、タップ部分や字が小さかったりしていたので、なるべく大きいものに変更する