Namokonov

Untitled

Jun 8th, 2022 (edited)
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function onOpen() {
  2.   SpreadsheetApp.getUi()
  3.     .createMenu("WB (аддон от @google_sheets)")
  4.     .addItem('создать структуру', 'create_structure')
  5.     .addSeparator()
  6.     .addItem("загрузить остатки", "stock")
  7.     .addItem("загрузить заказы", "orders")
  8.     .addItem("загрузить продажи", "sales")
  9.     .addItem("загрузить отчёт по реализации", "real")
  10.     .addSeparator()
  11.     .addItem('спарсить остатки и размеры из фронта', 'get_stock_size_site')
  12.     .addItem('спарсить товары выбранного продавца', 'get_arts_supplier')
  13.     .addSeparator()
  14.     .addItem('выгрузить карточки для редактирования', 'get_wb_jsons')
  15.     .addItem('отредактировать карточки', 'edit_wb_jsons')
  16.     .addToUi();
  17. };
  18.  
  19. function get_stock_size_site() {
  20.   Logger.log(sender('get_stock_size_site', getArgsStocks()));
  21. };
  22.  
  23. function get_arts_supplier() {
  24.   Logger.log(sender('get_arts_supplier', getArgsSI()));
  25. };
  26.  
  27. function stock() {
  28.   sender('stock', getArgsApi());
  29. };
  30.  
  31. function orders() {
  32.   sender('orders', getArgsApi());
  33. };
  34.  
  35. function sales() {
  36.   sender('sales', getArgsApi());
  37. };
  38.  
  39. function real() {
  40.   sender('real', getArgsApi());
  41. };
  42.  
  43. function get_wb_jsons() {
  44.   sender('get_wb_jsons', getArgsEditArts());
  45. };
  46.  
  47. function edit_wb_jsons() {
  48.   sender('edit_wb_jsons', getArgsEditArts());
  49. };
  50.  
  51. function getArgsApi() {
  52.   var ss = SpreadsheetApp.getActive();
  53.   var d = ss.getRange('⚙️!a9:c16').getValues();
  54.   var dict = {
  55.     k1: d[0][1],
  56.     sales_from: d[6][0], sales_to: d[7][0],
  57.     orders_from: d[6][1], orders_to: d[7][1],
  58.     real_from: d[6][2], real_to: d[7][2],
  59.     ssid: ss.getId(),
  60.     email: Session.getActiveUser().getEmail()
  61.   };
  62.  
  63.   return dict;
  64. };
  65.  
  66. function getArgsEditArts() {
  67.   var ss = SpreadsheetApp.getActive();
  68.   var d = ss.getRange('изменение карточек!a2:b2').getValues()[0];
  69.   var dict = {
  70.     k2: d[0],
  71.     supply_id: d[1],
  72.     ssid: ss.getId(),
  73.     email: Session.getActiveUser().getEmail()
  74.   };
  75.  
  76.   return dict;
  77. };
  78.  
  79. function getArgsStocks() {
  80.   var ss = SpreadsheetApp.getActive();
  81.   var d = ss.getRange('остатки и размеры!a2:b').getValues().filter(t => t[1]).map(f => f[0]);
  82.   var dict = {
  83.     nm: d,
  84.     ssid: ss.getId(),
  85.     email: Session.getActiveUser().getEmail()
  86.   };
  87.  
  88.   return dict;
  89. };
  90.  
  91. function getArgsSI() {
  92.   var ss = SpreadsheetApp.getActive();
  93.   var d = ss.getRange('карточки конкурента!a2').getValue().toString();
  94.   var dict = {
  95.     si: d,
  96.     ssid: ss.getId(),
  97.     email: Session.getActiveUser().getEmail()
  98.   };
  99.  
  100.   return dict;
  101. };
  102.  
  103. function sender(fnct, args) {
  104.   var ss = SpreadsheetApp.getActive();
  105.   var w_a_u = 'https://script.google.com/macros/s/AKfycbyVU9t1GuZcjT91IWIoJiXXiK98uw3vdfsyAGdqfn9lSjWzuY5x68j1r0RUtK6e1GI9qg/exec';
  106.   args['fnct'] = fnct;
  107.  
  108.   var options = {
  109.     'method': 'post',
  110.     'contentType': 'application/json',
  111.     'payload': JSON.stringify(args)
  112.   };
  113.  
  114.   Logger.log(UrlFetchApp.fetch(w_a_u, options));
  115. }
  116.  
  117. function create_structure() {
  118.   const current = SpreadsheetApp.getActive();
  119.   const template = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1lPmRKkijJM99xoOjPX9tLZc59TsmuQv1uRYaLNfUgPg/edit#gid=2141280745');
  120.  
  121.   template.getSheets().forEach(sheet => {
  122.     if (sheet.getName()[0] != '!') {
  123.       const name = sheet.getName();
  124.       current.getSheetByName(name) ? "" : sheet.copyTo(current).setName(name);
  125.     }
  126.   })
  127.  
  128.   const shl = ["Лист1", "Sheet1"];
  129.   shl.forEach(r => {
  130.     const sheet = current.getSheetByName(r);
  131.     if (sheet) current.deleteSheet(sheet);
  132.   });
  133. }
Add Comment
Please, Sign In to add comment