我有一个谷歌电子表格“共享”,其中包含所有物料清单。我想保留另一个电子表格“master”,只有所有者才能访问它。插入共享电子表格中的任何数据都应反映在主电子表格中,但如果我们编辑共享电子表格,则不应反映在主电子表格中。
任何帮助都将不胜感激。
答案 0 :(得分:0)
这取决于“更改”的含义,但是你可以将=Master!A1
放在从属工作表的单元格A1中,然后将右下角完全向下拖动,然后拖动右下角那个选择一路走来。因此,单元格D8将具有=Master!D8
,依此类推。
答案 1 :(得分:0)
Google Spreadsheets确实具有脚本功能。它还有一个公共图库脚本。
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]); } }