Как перенести назначенные задачи с одного листа на другой? - PullRequest
0 голосов
/ 01 декабря 2018

Хорошо, я знаю о скриптах в Google Sheets, особенно о функции ImportRange.Тем не менее, это не просто импорт, так как есть условия, которые должны быть выполнены.

Итак, все.В одном файле Google Sheets у меня 5 листов.

Лист 1 содержит задачи и детали, указанные в столбцах AP (поэтому он занимает одну целую строку).Задачи назначаются одному человеку на основе того, что указано в параметрах проверки данных в столбце Q.

Между тем, для листов 2-5 они представляют собой листы для каждого человека в параметрах проверки данных.Задачи на листе 1 должны быть перенесены на листы 2-5, основываясь на том, кому они назначены в столбце Q листа 1.

В POV рабочего процесса речь идет о трафике.Какой код я должен поместить в редактор скриптов?

электронная таблица

1 Ответ

0 голосов
/ 02 декабря 2018

Это простой пример, на котором вы можете построить:

function assignTask() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var today=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy");
  for(var i=1;i<vA.length;i++){
    if(!vA[i][3]){
      var sht=ss.getSheetByName(vA[i][2]);
      if(sht){
        sht.appendRow([vA[i][0],today]);
      }else{
        var sht=ss.insertSheet(vA[i][2]);
        sht.appendRow(['Task','Date'])
        sht.appendRow([vA[i][0],today]);
      }
      vA[i][3]='Done';
      vA[i][1]=today;
    }
  }
  rg.setValues(vA);
}

Электронная таблица выглядит следующим образом:

enter image description here

Послезапуск сценария выглядит следующим образом:

enter image description here

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

Чтобы ответить на ваш вопрос: Ваша функция копирует столбцы.

function copyColumns() {
  var srcSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Total"); 
  var desSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cooked"); 
  var cA = ['A','C','D','F']; 
  var pA = ['A','B','C','D']; 
  for(var i=0;i<cA.length;i++){
    srcSheet.getRange(cA[i] + ':' + cA[i]).copyTo(desSheet.getRange(pA[i] + ':' + pA[i]));
    //src colA to des colA, src colc to des colB,src colD to des colC,src colF to des colD 
  }
}

Оформить эти ссылки:

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