2010-12-10 6 views
0

Google 스프레드 시트는 모든 BOM으로 구성되며 "공유"됩니다. 소유자 만 액세스 할 수 있도록 다른 스프레드 시트 "마스터"를 유지하고 싶습니다. 공유 스프레드 시트에 삽입 된 모든 데이터는 마스터 스프레드 시트에 반영되어야하지만 공유 스프레드 시트를 수정하면 마스터 스프레드 시트에 반영되어서는 안됩니다.하나의 스프레드 시트에서 변경 한 내용이 다른 스프레드 시트에 반영되어야합니다.

도움을 주시면 감사하겠습니다.

답변

0

"변경 사항"의 의미에 따라 다르지만 =Master!A1을 슬레이브 시트의 A1 셀에 넣은 다음 오른쪽 하단 모서리를 끝까지 아래로 드래그 한 다음 해당 선택 항목의 오른쪽 하단 모서리를 모두 드래그하십시오 길 건너편. 셀 D8에는 =Master!D8 등이 있습니다.

+0

덕분에 당신의 interest.I가 가질 수에 대한 importrange 또는 importdata 수식을 사용했지만 공유 스프레드 시트를 편집하는 경우 마스터에서 변경되고 있습니다. 원하지 않는 부분이 있습니다. 새로 추가 된 데이터 만 공유하면 편집 된 마스터가 아닌 마스터 링됩니다. 지금 내 포인트가 있습니다. – Ani

+0

알았어. 나는이 일을 할 수있는 방법을 모른다. 나는 누군가가 나를 바로 잡을지라도 그것을 끝낼 수 없다는 유혹을 받는다. –

+0

희망이 있습니다. 스프레드 시트를 복사하여 마스터로 사용하는 경우 유용합니다. 스프레드 시트를 복제하는 데는 그다지 목적이 없습니다. – Ani

0

Google 스프레드 시트에는 스크립팅 기능이 있습니다. 또한 공개 갤러리 스크립트도 있습니다. 공공 스크립트의

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

하나는 불행하게도이 시간에 업데이트되지 않은 edit to another spreadsheet

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

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

, 그리고 코드보고 후 나는 그것을 생각하지 않는다 대화 메시지가 있고 return 문이 있기 때문에 실제로 완료되었습니다.

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

나는 이것이 정말 유용한 스크립트가 될 수 있다고 생각하고 그래서 나는 그것으로 약간의 편집을 완료했지만, 실제로 거기에 댓글이 없습니다, 나는 그것을 얻을 수있는 시간이 없어 지금 당장 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]); 
    } 


} 



관련 문제