Я не совсем уверен, как правильно объяснить это, но здесь мы идем ...

Я пытаюсь создать единый бюджетный документ, который позволит мне управлять закупками и выверкой для нескольких проектов. Я хотел бы создать отдельные листы для каждого проекта и приобрести элементы, заполненные на мастер-листе.

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

Скриншот

Любая помощь с благодарностью.

1 ответ1

0

Изучив ваш вопрос чуть ближе, я решил, что для этого вам нужно написать скрипт Google.

Все, что вам нужно сделать, это: открыть редактор скриптов Google, создать новый проект, вставить его в конец скрипта, переименовать "Согласование", чтобы оно соответствовало названию вашей электронной таблицы, а затем сохранить его. onEdit() - это триггер, встроенный в скрипты Google, который выполняет работу по обновлению после редактирования, а checkReceived() - это ручной пример, который выполняет ту работу, которую вы ищете. Я адаптировал этот "пример" к вашему изображению. Вы увидите, что вы можете добавить столько проектов, сколько захотите, и это будет охватывать их точно так же. Вы можете изменить данные так, чтобы они соответствовали всем, что вам нужно (т.е. вы также должны заметить, что я назвал мастер-лист "Мастер"), но это должно работать для вас. Пожалуйста, дайте мне знать, как это происходит.

function checkReceived() {


  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  //The following to ensures you don't run this on another spreadsheet
  if(spreadsheet.getName()=="Reconciliation") //<--This is the name of the spreadsheet I used, change it for yours.
  {  

    var maxIntervalSS = spreadsheet.getNumSheets();
    var theMasterSheet = spreadsheet.getSheetByName("Master");
    var masterSheetID = theMasterSheet.getIndex();
    var sheets = spreadsheet.getSheets();
    var thisRow = theMasterSheet.getRange(1,1); //Arbitrary for initialization

    //Need to Clear existing master data.
    theMasterSheet.getDataRange().clear();

    //Will use a flag to repopulate header.
    var firsttime= true;

    //Iterates through each spreadsheet
    for(var checkingSheetIterator = 0; checkingSheetIterator<maxIntervalSS; checkingSheetIterator++)
    {

      var currentSheet = sheets[checkingSheetIterator];

      //Ignores the iteration if ID equals the master sheet
      if(currentSheet.getIndex()!=masterSheetID)
      {




        //Getting currentSheet's data
        var currentRange = currentSheet.getDataRange();

        //Iterates through the currentSheet's data
        for(var rows = 1; rows<=currentSheet.getLastRow(); rows++)
        {
          //Repopulating header on first time.              
          //"8" for column H, containing the Status
          if(currentRange.getCell(rows,8).getValue()=="Received"|| firsttime)  //<-Note this is your keyword and specified location; "8".
          {  //Add to bottom of sheet
            theMasterSheet.appendRow([currentRange.getCell(rows,1).getValue(),currentRange.getCell(rows,2).getValue(),
                                      currentRange.getCell(rows,3).getValue(),currentRange.getCell(rows,4).getValue(),
                                      currentRange.getCell(rows,5).getValue(),currentRange.getCell(rows,6).getValue(),
                                      currentRange.getCell(rows,7).getValue(),currentRange.getCell(rows,8).getValue(),
                                      currentRange.getCell(rows,9).getValue(),currentRange.getCell(rows,10).getValue(),
                                      currentRange.getCell(rows,11).getValue()]);
            firsttime=false;
          }
        }
      }
    }
  }
};  

function onEdit(){

  checkReceived();

};

Ниже приведен пример настройки электронной таблицы. Обратите внимание, что имя электронной таблицы - "Согласование" (вверху рисунка), а вкладки (т. Е. Листы) внизу страницы называются "Мастер", "Проект1" и "Проект2". Обратите внимание, что я не беспокоился об условном форматировании, поскольку оно не должно иметь никакого отношения к результату.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .