Использование диалогового окна для заказа деталей из инвентарного листа
Очевидно, что в реальной жизни это будет намного сложнее, но это всего лишь пример, с которого можно начать.Возможно, вы захотите убедиться, что активная страница является заказом и, возможно, имеет сегодняшнюю дату, а затем вы, вероятно, захотите выбрать количество и вычесть это из инвентаря.Таким образом, все может стать более сложным довольно быстро.
Если бы это была работа, которую я выполнял для клиента, я бы фактически использовал шаблонный подход html, о котором вы можете прочитать в справке ниже.
function onOpen() {//Drop Down Menu You will need to run this from the editor to get it to create a menu. Or close and then open the spreadsheet. If you have other menus then make sure you put this in another project.
SpreadsheetApp.getUi().createMenu('Order Parts')
.addItem('Show Order Dialog', 'getInventory')
.addToUi();
}
function getInventory() {//show order dialog for selecting parts
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Inventory');
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var pA=rg.getValues();
var html="<style>td,th{border:1px solid black;}</style><table>";
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td></tr>','Brand','Product Description','Item','Quantity')
for(var i=0;i<pA.length;i++) {
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><input type="button" value="Order" onClick="moveToOrder(%s);" /></td></tr>',pA[i][0],pA[i][2],pA[i][2],pA[i][3],i+2)
}
html+='</table><br /><input type="button" value="Close" onClick="google.script.host.close();" />';
html+='<script>function moveToOrder(row){google.script.run.moveToOrder(row);};console.log("MyCode");</script>';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(600).setHeight(300).setTitle('Inventory');
SpreadsheetApp.getUi().showModelessDialog(userInterface,'Inventory');
}
function moveToOrder(row) { //moves selected part to active page so make sure your on the right order form
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Inventory');
var rg=sh.getRange(row,1,1,3);
var pA=rg.getValues();
var osh=ss.getActiveSheet();
osh.appendRow(pA[0]);
}
Мой инвентарный лист:
Форма моего заказа:
Нажмите Показать диалог заказа в меню, и появится диалоговое окно
Нажмите кнопку рядом с деталью, которую вы хотите заказать, и деталь появится в заказе
Шаблонный HTML
Документация скрипта Google Apps