Изменения, сделанные в одной электронной таблице, должны быть отражены в другой электронной таблице. - PullRequest
0 голосов
/ 10 декабря 2010

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

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Google Spreadsheets действительно поддерживает скрипты.У этого также есть публичный подлинник галереи.

image http://img593.imageshack.us/img593/5410/screenshot20110720at736.png

Один из общедоступных сценариев: edit to another spreadsheet

<strong>edit to another spreadsheet</strong>
update in another spreadsheet the changes in the current one
ticcaje (at) gmail.com

image http://img97.imageshack.us/img97/240/picture1nns.png

, к сожалению, он не был обновленчерез некоторое время, и, посмотрев на код, я не думаю, что он когда-либо был фактически завершен, поскольку есть диалоговое сообщение, а затем оператор возврата.

image http://img718.imageshack.us/img718/5264/pictureja.png

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

function onEdit(){


  var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var targetSpreadsheet = SpreadsheetApp.openById('0AntUWac3dtkUac3dtnhTjMwac3dtVjBiac3dtOXcac3dt'); //put in your spreadsheet key here


  var sourcesSheet = sourceSpreadsheet.getSheets()[0];
  var targetSheet = targetSpreadsheet.getSheets()[0];



  var currentSourceCellIndex = SpreadsheetApp.getActiveRange().getRow();    //ActiveCell().getValues();
  var selectedCell = SpreadsheetApp.getActiveSpreadsheet().getActiveSelection().getA1Notation();
  var targetRowsCount = targetSheet.getLastRow();          
  var targetColumns = sourcesSheet.getLastColumn();


  var targetRange = targetSheet.getRange(1, 1, targetRowsCount, targetColumns);
  var targetSources = targetRange.getValues();        

  var sourceRows = sourcesSheet.getLastRow();
  var sourceColumns = sourcesSheet.getLastColumn();
  var sourcesRange = sourcesSheet.getRange(1, 1, sourceRows, sourceColumns);
  var sources = sourcesRange.getValues();
  var compareName = sources[currentSourceCellIndex-1][0];  



  return;



  //Browser.msgBox("currentSourceCell: "+sources[currentSourceCellIndex-1][0]);return;  // ActiveCell()
  //Browser.msgBox("currentSourceCell: "+targetRowsCount);
 // return;                       
  for (var i = 1; i < targetRowsCount; ++i) {
    if (targetSources[i-1][0] == compareName){

      targetSheet.deleteRow(i);
      break;    
    }
  }      

//    var sourceRows = sourcesSheet.getLastRow();
//    var sourceColumns = sourcesSheet.getLastColumn();

//    var sourcesRange = sourcesSheet.getRange(1, 1, sourceRows, sourceColumns);
//    var sources = sourcesRange.getValues();

    //if ((sources[sourceRows-1][0] == "")||(sources[sourceRows-1][1] == "") ||(sources[sourceRows-1][2] == "") || (sources[sourceRows-1][3] == "") || (sources[sourceRows-1][4] == "") || (sources[sourceRows-1][5] == "")) 
    //return;  

    //currentSourceCell = sourceSheet.getActiveCell();

    rowToInsert = targetSheet.getLastRow();      
    targetSheet.insertRowAfter(rowToInsert);
    var insertRange = targetSheet.getRange(rowToInsert + 1, 1, 1, targetSheet.getLastColumn());


    var kolonnen = [];
    var tbText   = [];
    for (var i = 1; i < 16; ++i) {
      kolonnen.push(i);
      tbText.push(sources[sourceRows-1][i-1]);
    }

    //Browser.msgBox("source is: "+tbText);return;                      
    for (j = 0; j < kolonnen.length; j++) {
       var zellRange = targetSheet.getRange(rowToInsert+1, kolonnen[j], 1, 1);
         zellRange.setValue(tbText[j]);
    }


}

Доступ к исходному коду можно получить, отредактировав скрипт, но если вы захотите, я просто отправлю сообщениеэто здесь тоже:


function onEdito() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [ {
        name: "go",
        functionName: "insertRow"
    }
    //    ,
    //    {
    //        name: "Build Journal",
    //        functionName: "collectJournal"
    //    }
    ];
    ss.addMenu("pastePlus", menuEntries);
}

function onEdit(){

  var sourceSpreadsheetName = Browser.inputBox("source spreadsheet");  
  //var sourceSpreadsheetName = SpreadsheetApp.getActiveSpreadsheet().getName();

  var files = DocsList.getFilesByType("spreadsheet");
  //var files = SpreadsheetApp;

  Browser.msgBox("currentSourceCell: " +files);
  //var sourceSpreadsheet;
  for (var i = 0; i < files.length; ++i) {
    var filename = files[i].getName();
    if (filename == sourceSpreadsheetName) {
      var sourceSpreadsheet = SpreadsheetApp.openById(files[i].getId());
      var sheets = sourceSpreadsheet.getSheets();
      var sourcesSheet = sheets[1];
      break;
    }
  }

  var targetSpreadsheetName = "Probando Script"; //DocsList.getFilesByType("spreadsheet");     

    //var targetSpreadsheet;
      for (var i = 0; i < files.length; ++i) {
        var filename = files[i].getName();
        if (filename == targetSpreadsheetName) {
            var targetSpreadsheet = SpreadsheetApp.openById(files[i].getId());
            var sheets = targetSpreadsheet.getSheets();
            var targetSheet = sheets[1];
            break;
        }
    }

  var currentSourceCellIndex = SpreadsheetApp.getActiveRange().getRow();    //ActiveCell().getValues();      
  var selectedCell = SpreadsheetApp.getActiveSpreadsheet().getActiveSelection().getA1Notation();
  var targetRowsCount = targetSheet.getLastRow();          
  var targetColumns = sourcesSheet.getLastColumn();


  var targetRange = targetSheet.getRange(1, 1, targetRowsCount, targetColumns);
  var targetSources = targetRange.getValues();        

  var sourceRows = sourcesSheet.getLastRow();
  var sourceColumns = sourcesSheet.getLastColumn();
  var sourcesRange = sourcesSheet.getRange(1, 1, sourceRows, sourceColumns);
  var sources = sourcesRange.getValues();
  var compareName = sources[currentSourceCellIndex-1][0];  

  //Browser.msgBox("currentSourceCell: "+sources[currentSourceCellIndex-1][0]);return;                       
  Browser.msgBox("currentSourceCell: "+targetRowsCount);return;                       
  for (var i = 1; i < targetRowsCount; ++i) {
    if (targetSources[i-1][0] == compareName){

      targetSheet.deleteRow(i);
      break;    
    }
  }      

    var sourceRows = sourcesSheet.getLastRow();
    var sourceColumns = sourcesSheet.getLastColumn();

    var sourcesRange = sourcesSheet.getRange(1, 1, sourceRows, sourceColumns);
    var sources = sourcesRange.getValues();

    //if ((sources[sourceRows-1][0] == "")||(sources[sourceRows-1][1] == "") ||(sources[sourceRows-1][2] == "") || (sources[sourceRows-1][3] == "") || (sources[sourceRows-1][4] == "") || (sources[sourceRows-1][5] == "")) 
    //return;  

    //currentSourceCell = sourceSheet.getActiveCell();

    rowToInsert = targetSheet.getLastRow();      
    targetSheet.insertRowAfter(rowToInsert);
    var insertRange = targetSheet.getRange(rowToInsert + 1, 1, 1, targetSheet.getLastColumn());


    var kolonnen = [];
    var tbText   = [];
    for (var i = 1; i < 16; ++i) {
      kolonnen.push(i);
      tbText.push(sources[sourceRows-1][i-1]);
    }

    //Browser.msgBox("source is: "+tbText);return;                      
    for (j = 0; j < kolonnen.length; j++) {
       var zellRange = targetSheet.getRange(rowToInsert+1, kolonnen[j], 1, 1);
         zellRange.setValue(tbText[j]);
    }


}



0 голосов
/ 10 декабря 2010

Ну, это зависит от того, что вы подразумеваете под «изменениями», но вы можете поместить =Master!A1 в ячейку A1 ведомого листа, затем перетащить нижний правый угол до конца вниз, а затем перетащить нижний правый угол этого выделения. весь путь через. Таким образом, ячейка D8 будет иметь =Master!D8 и т. Д.

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