Обновление старых отформатированных электронных таблиц с использованием переформатированной электронной таблицы, которая берет старые значения и дублирует их - PullRequest
0 голосов
/ 24 ноября 2018

КОД СДЕЛАН thx @TheMaster ✔

Я абсолютный новичок в Google Drive SDK, извините.

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

Процедура, на мой взгляд, для сценария:

  • перейти в папку, где много листов
  • открыть первый лист и затем всегда следующий
  • взять данные из области (A1: A2; C1: C2)
  • взять названия листов
  • Скопировать их в данные в исходной электронной таблице в том же месте
  • Сделайте копию исходной таблицы
  • Назовите исходную таблицу как старый лист
  • переименуйте ее и поместите в другую папку

Я помогу, где смогу.

текущий код :

function UPDATE() {
  //LEGEND: o=Old, ss=SpreadSheet, sss=SourceSreadSheet, s=Sheet, n=Name//

  //---TAKE ALL OLD SPREADSHEEDS FROM FOLDER ---//
  
  //replace it with Folder ID where the old spreadsheets are in
  var folder=DriveApp.getFolderById('Folder ID')
  //takes all files in the folder and sets the variable file
  var files=folder.getFiles();
    while (files.hasNext()) 
    {
  var file = files.next();

  //---TAKE DATA---//

  //replace with source ID
  var o_ss=SpreadsheetApp.open(file); 
  //replace with source Sheet tab name 1 to as much as you want
  var o_s_n1=o_ss.getSheetByName('tab name1');
  var o_s_n2=o_ss.getSheetByName('tab name2'); //optional
  //assign one ore more ranges you want to copy
  var o_range1=o_s_n1.getRange('A1:A2'); 
  var o_range2=o_s_n1.getRange('C1:C2'); //optional
  //Copy the values
  var o_data1=o_range1.getValues();
  var o_data2=o_range2.getValues(); //optional

  //---COPY DATA---//

  //replace with destination ID
  var sss_ss=SpreadsheetApp.openById('destination ID');
  //replace with destination Sheet tab name
  var sss_s=sss_ss.getSheetByName('tab name1');
  //Area where to copy in the new sheet
    sss_s.getRange('A1:A2').setValues(o_data1); 
    sss_s.getRange('C1:C2').setValues(o_data2); //optional

  //closes the code until here first
  SpreadsheetApp.flush();
          
  //---DUPLIKATE SOURCE SHEET AND RENAME IT AND PUT IT IN THE DESTINATION FOLDER---//
  
  //gets the sheet name from the old sheet
  var o_ss_n=o_ss.getName();
  //replace with destination Folder ID
  var folder=DriveApp.getFolderById('Folder ID')
  
  //Copy the destination sheet and name it like the old sheet
    DriveApp.getFileById('destination ID').makeCopy(o_ss_n,folder);
    }
}

1 Ответ

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

Окончательно Готово thx @ TheMaster

function UPDATE() {
  //LEGEND: o=Old, ss=SpreadSheet, sss=SourceSpreadSheet, s=Sheet, n=Name//

  //---TAKE ALL OLD SPREADSHEEDS FROM FOLDER ---//
  
  //replace it with Folder ID where the old spreadsheets are in
  var folder=DriveApp.getFolderById('Folder ID')
  //takes all files in the folder and sets the variable file
  var files=folder.getFiles();
    while (files.hasNext()) 
    {
  var file = files.next();

  //---TAKE DATA---//

  //replace with source ID
  var o_ss=SpreadsheetApp.open(file); 
  //replace with source Sheet tab name 1 to as much as you want
  var o_s_n1=o_ss.getSheetByName('tab name1');
  var o_s_n2=o_ss.getSheetByName('tab name2'); //optional
  //assign one ore more ranges you want to copy
  var o_range1=o_s_n1.getRange('A1:A2'); 
  var o_range2=o_s_n1.getRange('C1:C2'); //optional
  //Copy the values
  var o_data1=o_range1.getValues();
  var o_data2=o_range2.getValues(); //optional

  //---COPY DATA---//

  //replace with destination ID
  var sss_ss=SpreadsheetApp.openById('destination ID');
  //replace with destination Sheet tab name
  var sss_s=sss_ss.getSheetByName('tab name1');
  //Area where to copy in the new sheet
    sss_s.getRange('A1:A2').setValues(o_data1); 
    sss_s.getRange('C1:C2').setValues(o_data2); //optional

  //closes the code until here first
  SpreadsheetApp.flush();
          
  //---DUPLIKATE SOURCE SHEET AND RENAME IT AND PUT IT IN THE DESTINATION FOLDER---//
  
  //gets the sheet name from the old sheet
  var o_ss_n=o_ss.getName();
  //replace with destination Folder ID
  var folder=DriveApp.getFolderById('Folder ID')
  
  //Copy the destination sheet and name it like the old sheet
    DriveApp.getFileById('destination ID').makeCopy(o_ss_n,folder);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...