Как я могу автоматически перемещать строки и ячейки информации с одного листа на другой с помощью Apps Script? - PullRequest
0 голосов
/ 19 января 2020

Я новичок в Apps Script и мне нужно переместить информацию о заказе с одного листа на другой лист, который отслеживает наши инвентарные номера. Вот ссылка на редактируемый пример листа, который я сделал:

https://docs.google.com/spreadsheets/d/19IwogRMmc7R-MPtPPjFizyt4WAe7FIbOjhVBxfkO4II/edit?usp=sharing

Из комментария ниже: «Я добавил некоторые цвета на обоих листах, чтобы показать до и после. Строки 2-7 на исходном листе будут перенесены в строки 3-8 на целевом листе. Цель состоит в том, чтобы получить строки 8-10 на исходном листе в строки 9-11 на целевом листе и заполнить # заказов под соответствующим именем элемента в каждом столбце. "

Я пытался использовать функцию Query, но моя проблема в том, что у нас есть" пакеты ", которые включают несколько элементов. По сути, мне нужен целевой лист, чтобы автоматически добавить информацию из исходного листа, а затем добавить количество заказов в соответствующие столбцы на основе имени элемента, а если это пакет, мне нужно добавить количество заказов во все три столбца элементов. Я предполагаю, что в сценарии будет ряд операторов «если», но часть, которую я не могу понять, это автоматический c перенос информации на целевой лист и создание новых строк на целевом листе.

Большое спасибо заранее за любую предоставленную помощь, и, если есть более простой способ сделать это, кроме скрипта приложения, пожалуйста, дайте мне знать! Еще раз спасибо!

1 Ответ

0 голосов
/ 20 января 2020

Отправка заказов на инвентарный лист

Я немного изменил ваши формы, добавив столбец с именем Ordered, который указывает "Да" при отправке элемента. Я также изменил ваши Item1, Item2 и Item3 на Socks, Shoes and Pants, что соответствует вашему инвентарному листу. В этом нет ничего сложного: он просто загружает данные в массив строк и добавляет их в список инвентаря и помечает столбец Упорядоченный как Да. Если клиенты не покупают полный пакет, то функция проверяет столбцы носков и брюк, чтобы увидеть, какие из них не пустые, а те, которые не являются пустыми, отправляются на инвентарный лист с номером в столбце заказов и помещаются в соответствующие столбцы. на листе инвентаря.

function submitOrders() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Orders');
  var ish=ss.getSheetByName('Inventory');
  var idx={hr:1,sr:2,hA:[],lc:9};
  idx.hA=sh.getRange(idx.hr,1,1,idx.lc).getValues()[0];
  idx.hA.forEach(function(e,i){idx[e.trim()]=i;})
  var oA=sh.getRange(idx.sr,1,sh.getLastRow()-idx.sr+1,idx.lc).getValues();
  oA.forEach(function(r,i){
    if(r[idx.Ordered]!='Yes') {
      if(r[idx.Complete]=='Yes') {
        var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],r[idx.Orders],r[idx.Orders],r[idx.Orders]];
        ish.appendRow(row);
        sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
      }else{
        var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],(r[idx.Socks])?r[idx.Orders]:'',(r[idx.Shoes])?r[idx.Orders]:'',(r[idx.Pants])?r[idx.Orders]:''];
        ish.appendRow(row);
        sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
      }
    }
  });
}

Листы перед запуском Сценарий:

Заказы: enter image description here

Инвентарь: enter image description here

Лист после запуска Сценарий:

Заказы: enter image description here

Инвентарь: enter image description here

Sheet appendRow ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...