Копировать данные из определенной ячейки на другой лист с различным форматированием в другую папку - PullRequest
0 голосов
/ 09 ноября 2019

Внутри одного листа Google я хочу запустить скрипт (с помощью кнопки, прикрепленной к скрипту), который копирует другой, другой лист в другую папку назначения, называя новый файл в соответствии со значением ячейки на первом листе. Может кто-то указать мне верное направление? Вот что у меня есть:

  function onOpen(e) {                   
  var jobTitle = SpreadsheetApp.getActiveSpreadsheet().getName();
  SpreadsheetApp.getActiveSpreadsheet().getRange("B3").setValue(jobTitle);
   }
  function CreateManFile8() {           
  var copyMan = DriveApp.getFileById("Source ID");                                  
  var toFolder = DriveApp.getFolderById("Destination ID");                                                   
  copyMan.makeCopy(toFolder);
   }

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

Мне нужен способ присвоить имя человеку. шаблон в соответствии со значением в B3 (или любой указанной ячейке) из шаблона Sales SpreadSheet. У меня есть скрипт, прикрепленный к кнопке внутри шаблона Sales, но он просто копирует второй шаблон и называет его «Source ID», а не значение B3.

ИСТОРИЯ ВОПРОСА: (ДЛЯ ЭТОГО ЗАИНТЕРЕСОВАНО)

Каждый из проектов, которыми я управляю на работе, связан с процессами продаж, содержащимися в шаблоне «Электронная таблица продаж», состоящем из нескольких взаимосвязанных листов и процессов управления, содержащихся в нем. в шаблоне «Электронная таблица управления», состоящем из нескольких других взаимосвязанных (со стандартными формулами) листов. В конце концов, оба этих шаблона электронной таблицы копируются и используются для каждого нового проекта.

Во-первых, каждая перспектива продаж включает процессы продаж, которые приводят к тому, что шаблон электронной таблицы продаж копируется, переименовывается и итеративно заполняется соответствующими данными о клиентах и ​​продажах на протяжении всего процесса продаж. Затем, в какой-то момент, подписываются контракты, которые задействуют процессы управления, и, следовательно, шаблон «Электронная таблица управления» копируется, именуется и используется для проекта.

Идея состоит в том, чтобы иметь «Человека». Шаблон "скопировать изнутри" шаблона продаж "после того, как шаблон продаж был назван вручную и заполнен информацией, собранной в процессе продаж.

Большая часть данных была собрана, проанализирована и представлена ​​на этапе управлениялюбого проекта отличается от данных, необходимых для согласования процессов продаж, но небольшая часть избыточности должна быть программно перенесена из шаблона продаж в шаблон управления для каждого проекта.

Итак, я прихожуВАМ ... сообщество переполнения стека для руководства. Буду очень признателен всем серьезным, ориентированным на обслуживание людям, предлагающим помощь.

Я знаю, что большинство из вас умнее меня. Это не помогает бытьнапомнил. Так что, кто на самом деле ваЯ не могу дождаться, чтобы услышать ваше мнение.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Если я правильно понял, вам нужна функция, которая делает копию электронной таблицы в указанной папке со значением ячейки B3 в качестве имени.

Вы можете попробовать эту модификацию своей функции:

  function CreateManFile8() {           
     var copyMan = DriveApp.getFileById("spreadsheet Id").getId();    
     var toFolder = DriveApp.getFolderById("folder Id");       

     var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
     var sheetName = sheet.getRange('B3').getDisplayValue();

     DriveApp.getFileById(copyMan).makeCopy(sheetName, toFolder);  

}

Для получения дополнительной информации вы можете проверить документацию makeCopy и getDisplayValue .

0 голосов
/ 09 ноября 2019

Это просто пример, вы должны изменить его для своих целей, это скопирует файл из любой папки в другую папку с новым именем:

function CreateFile8() {
  //This assumes the folders are unique, so I don't use ID
  var folders=DriveApp.getFoldersByName('Sistem Folder'); //myfolder = 'my drive' > 'sistem folder'

  if (folders.hasNext())
  {
    var mySrcFolder = folders.next();
    var Destfolders = mySrcFolder.getFoldersByName('Test'); //myDestfolder = 'my drive' > 'sistem folder' > 'Test'
    var files=mySrcFolder.getFilesByName('Jojo'); //file jojo will be copied (only if not exist), and Jojo is as template
    if (files.hasNext() && Destfolders.hasNext())
    {
      var DestFolder = Destfolders.next();
      var myFile = files.next();
      var Destfiles=DestFolder.getFilesByName('Jobe'); //file jojo will be copied (only if not exist in dest), and Jojo is as template
      if (Destfiles.hasNext()==false)
      myFile.makeCopy('Jobe', DestFolder); //And jobe is extracted from your sheet, I don't adopt here to extract from your sheet
    }
  }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...