ryuji0909 / memo

0 stars 0 forks source link

(GAS)在庫管理システム(詳細ページ国内用) #4

Open ryuji0909 opened 2 weeks ago

ryuji0909 commented 2 weeks ago

`function doGet(e) { const template = HtmlService.createTemplateFromFile('index'); // p2が空白の場合 if (!e.parameter.p2) { template.isNewEntry = true; // 新規登録用のフラグを設定 template.param = []; } else { const keyword = e.parameter.p2 ? e.parameter.p2 : e.parameter.p1; const searchColumn = e.parameter.p2 ? "B:B" : "C:C"; // p2があればB:B列で検索、なければC:C列で検索 const items = findByTextFinder(keyword, searchColumn); if (items.length > 0) { template.param = [items[0].supplier_code, items[0].supplier_name, items[0].supplier_tel, items[0].supplier_fax, items[0].supplier_edi, items[0].supplier_leadtime, items[0].supplier_kubun, items[0].supplier_president, items[0].supplier_section, items[0].supplier_pic, items[0].supplier_mailpic, items[0].supplier_mailadr, items[0].supplier_zipcd1, items[0].supplier_addr1, items[0].supplier_zipcd2, items[0].supplier_addr2, items[0].supplier_dcname, items[0].supplier_zipcd3, items[0].supplier_addr3, items[0].supplier_itemgroups, items[0].supplier_pssection, items[0].supplier_regno, items[0].supplier_sakuin]; template.isNewEntry = false; // 更新用のフラグを設定 } } return template.evaluate(); }

//https://script.google.com/a/macros/hq.stylinglife.co.jp/s/AKfycbw_fkmEsoR9i9wNnbpMceBKAyIDtJ4oq3k98w2JODrMHNmVPzxJlV18fcAmwpjEvZM/exec?p1=49xxxxxxxxxxx

//のように、引数を渡すには、/exec?p1=のように書く。

// 引数を元にスプレッドシートから列を検索し、検索した列を取得 function findByTextFinder(keyword, searchColumn) { const id = "17KMA-kZ7PRLiHYR7_iOPwM2FVpxJ93w-YM0YZAIJuuk"; const sheet = SpreadsheetApp.openById(id).getSheetByName('国内仕入先一覧');

// 引数で指定された列で検索を実行 const textFinder = sheet.getRange(searchColumn).createTextFinder(keyword).matchEntireCell(true).findNext();

if (textFinder) { let row = textFinder.getRow(); return [{ 'supplier_sakuin': sheet.getRange(row, 1).getValue(), 'supplier_code': sheet.getRange(row, 2).getValue(), 'supplier_name': sheet.getRange(row, 3).getValue(), 'supplier_tel': sheet.getRange(row, 4).getValue(), 'supplier_fax': sheet.getRange(row, 5).getValue(), 'supplier_edi': sheet.getRange(row, 6).getValue(), 'supplier_leadtime': sheet.getRange(row, 7).getValue(), 'supplier_kubun': sheet.getRange(row, 8).getValue(), 'supplier_president': sheet.getRange(row, 9).getValue(), 'supplier_section': sheet.getRange(row, 10).getValue(), 'supplier_pic': sheet.getRange(row, 11).getValue(), 'supplier_mailpic': sheet.getRange(row, 12).getValue(), 'supplier_mailadr': sheet.getRange(row, 13).getValue(), 'supplier_zipcd1': sheet.getRange(row, 14).getValue(), 'supplier_addr1': sheet.getRange(row, 15).getValue(), 'supplier_zipcd2': sheet.getRange(row, 16).getValue(), 'supplier_addr2': sheet.getRange(row, 17).getValue(), 'supplier_dcname': sheet.getRange(row, 18).getValue(), 'supplier_zipcd3': sheet.getRange(row, 19).getValue(), 'supplier_addr3': sheet.getRange(row, 20).getValue(), 'supplier_itemgroups': sheet.getRange(row, 21).getValue(), 'supplier_pssection': sheet.getRange(row, 22).getValue(), 'supplier_regno': sheet.getRange(row, 23).getValue()

}];

} else { // 該当する行が見つからない場合は空の配列を返す return []; } }

// データの更新 function updateData(formData) { const id = "17KMA-kZ7PRLiHYR7_iOPwM2FVpxJ93w-YM0YZAIJuuk"; const sheet = SpreadsheetApp.openById(id).getSheetByName('国内仕入先一覧'); const range = sheet.getRange("B:B"); const values = range.getValues();

/ADD 2024/06/10 バリデーション追加 / if (formData.code == "" && formData.sakuin == "") { return 'CODEと索引が空白です'; } else if (formData.code == "" && formData.sakuin.length !== 1) { return 'CODEが空白です。索引は1文字で入力してください。' } else if (formData.code == "") { return 'CODEが空白です。' } else if (formData.sakuin == "") { return '索引が空白です。' } else if (formData.sakuin.length !== 1) { return '索引は1文字で入力してください。' }

for (var i = 0; i < values.length; i++) { if (values[i][0] == formData.code) { // フォームから送信されたCODEとシートの中のCODEと一致した場合 var row = i + 1; setRowData(sheet, row, formData); sortSheet(sheet); return 'データが更新されました。'; } } return '指定されたCODEのデータが見つかりませんでした。'; }

// データの新規登録 function addData(formData) { const id = "17KMA-kZ7PRLiHYR7_iOPwM2FVpxJ93w-YM0YZAIJuuk"; const sheet = SpreadsheetApp.openById(id).getSheetByName('国内仕入先一覧'); const lastRow = sheet.getLastRow() + 1;

/ADD 2024/06/10 バリデーション追加 / if (formData.code == "" && formData.sakuin == "") { return 'CODEと索引が空白です'; } else if (formData.code == "" && formData.sakuin.length !== 1) { return 'CODEが空白です。索引は1文字で入力してください。' } else if (formData.code == "") { return 'CODEが空白です。' } else if (formData.sakuin == "") { return '索引が空白です。' } else if (formData.sakuin.length !== 1) { return '索引は1文字で入力してください。' }

setRowData(sheet, lastRow, formData); sortSheet(sheet); return '新しいデータが追加されました。'; }

// 対象のデータをスプレッドシートに挿入 function setRowData(sheet, row, formData) { // スプレッドシートの列に合わせてデータを設定 let data = [ formData.sakuin, // A列:索引 formData.code, // B列: CODE formData.supplierName, // C列: 仕入先名 formData.tel, // D列: TEL formData.fax, // E列: FAX formData.webEdi, // F列: WEB-EDI formData.leadTime, // G列: 標準リードタイム formData.kubun, // H列: 区分 formData.president, // I列: 代表取締役 formData.department, // J列: 担当部署 formData.contactPerson, // K列: 担当者 formData.mailRecipient, // L列: メール宛先 formData.mailAddress, // M列: メールアドレス formData.addressWindowPostal, // N列: 住所(窓口〒) formData.addressWindow, // O列: 住所(窓口) formData.addressHeadquartersPostal, // P列: 住所(本社〒) formData.addressHeadquarters, // Q列: 住所(本社) formData.logisticsName, // R列: 物流名称 formData.addressLogisticsPostal, // S列: 住所(物流〒) formData.addressLogistics, // T列: 住所(物流) formData.itemNumber, // U列: 取扱品番 formData.section, // V列: 担当部門 formData.registrationNumber // W列: 登録番号 ];

// データを1行の範囲にセット sheet.getRange(row, 1, 1, data.length).setValues([data]); }

/ADD 2024/06/10 更新後にソートをかける / // 更新後にソート function sortSheet(sheet) { let range = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()); // 2行目の1列目から取得

range.sort([ {column: 1, ascending: true}, {column: 2, ascending: true}]); }

`

ryuji0909 commented 2 weeks ago

`<!DOCTYPE html>

CODE :
仕入先名 :
TEL :
FAX :
WEB-EDI :
標準リードタイム :
区分 :
代表取締役 :
担当部署 :
担当者 :
メール宛先 :
メールアドレス :
住所(窓口〒) :
住所(窓口) :
住所(本社〒) :
住所(本社) :
物流名称 :
住所(物流〒) :
住所(物流) :
取扱品番 :
担当部門 :
登録番号 :
索引 :

`