前提・実現したいこと
現在、在庫管理表を作成したく試行錯誤しております。
しかし勉強不足もあり再現ができずに行き詰っています。
是非知恵をお貸し頂ければと思い投稿させて頂きました。
質問にあたり仮のスプレットシートを作成しました。
「在庫表」と3種類のバッテリーを想定し
又それを使用する現場という欄を作成し、それを「A」「B」「C」と割り振り
シートを作成しております。
シート「A」にて現場名を入力すると日付が更新されるスクリプトまでは作成できました。
状態を「入庫」とし数量を入力した際
シート「在庫表」の該当の現場の在庫数と入庫日が反映されるように
又「出庫」とした場合には在庫数を数量分マイナスし出庫日が反映されるように
する事は可能でしょうか?
その場合はスクリプトは分けるべきなのでしょうか?
色々と調べては見たのですが実現には至っておりません。
無知で大変申し訳ございませんが、ご教示頂けると幸いです。
宜しくお願い致します。
該当のソースコード
GAS
1ソースコード
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var edit_sheet_name = ss.getActiveSheet().getSheetName();
Logger.log(edit_sheet_name);
switch (edit_sheet_name){
case 'A':
onEdit1();
break;
case 'B': onEdit2(); break; case 'C': onEdit3(); break;
}
}
// シートに変更があった時に実行する関数
function onEdit1() {
var ss = SpreadsheetApp.getActive().getSheetByName("A");// 変更のあったシート
var currentRow = ss.getActiveCell().getRow(); //アクティブなセルの行番号を取得
var currentCol = ss.getActiveCell().getColumn(); //アクティブなセルの列番号を取得
var currentCell = ss.getActiveCell().getValue(); //アクティブなセルの入力値を取得
var updateRange = ss.getRange('D' + currentRow); //どの列に更新日時を挿入したいか。この場合はA列
Logger.log(updateRange); //更新日の記入
if(currentRow > 3 && currentCol == 1) { //2行目以降かつG列の変更を参照とする
if(currentCell) {
updateRange.setValue(new Date());
}
}
}
function onEdit2() {
var ss = SpreadsheetApp.getActive().getSheetByName("B");// 変更のあったシート
var currentRow = ss.getActiveCell().getRow(); //アクティブなセルの行番号を取得
var currentCol = ss.getActiveCell().getColumn(); //アクティブなセルの列番号を取得
var currentCell = ss.getActiveCell().getValue(); //アクティブなセルの入力値を取得
var updateRange = ss.getRange('D' + currentRow); //どの列に更新日時を挿入したいか。この場合はA列
Logger.log(updateRange); //更新日の記入
if(currentRow > 3 && currentCol == 1) { //2行目以降かつG列の変更を参照とする
if(currentCell) {
updateRange.setValue(new Date());
}
}
}
// シートに変更があった時に実行する関数
function onEdit3() {
var ss = SpreadsheetApp.getActive().getSheetByName("C"); // 変更のあったシート
var currentRow = ss.getActiveCell().getRow(); //アクティブなセルの行番号を取得
var currentCol = ss.getActiveCell().getColumn(); //アクティブなセルの列番号を取得
var currentCell = ss.getActiveCell().getValue(); //アクティブなセルの入力値を取得
var updateRange = ss.getRange('D' + currentRow); //どの列に更新日時を挿入したいか。この場合はA列
Logger.log(updateRange); //更新日の記入
if(currentRow > 3 && currentCol == 1) { //2行目以降かつG列の変更を参照とする
if(currentCell) {
updateRange.setValue(new Date());
}
}
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/06 22:05