すべての部品表で構成される Google スプレッドシートを「共有」しています。所有者だけがアクセスできるように、別のスプレッドシートの「マスター」を保持したい。共有スプレッドシートに挿入されたデータはマスター スプレッドシートに反映されるはずですが、共有スプレッドシートを編集してもマスター スプレッドシートには反映されません。
どんな助けでも大歓迎です。
すべての部品表で構成される Google スプレッドシートを「共有」しています。所有者だけがアクセスできるように、別のスプレッドシートの「マスター」を保持したい。共有スプレッドシートに挿入されたデータはマスター スプレッドシートに反映されるはずですが、共有スプレッドシートを編集してもマスター スプレッドシートには反映されません。
どんな助けでも大歓迎です。
Google スプレッドシートにはスクリプト機能があります。また、公開ギャラリー スクリプトもあります。
画像 http://img593.imageshack.us/img593/5410/screenshot20110720at736.png
公開スクリプトの 1 つがedit to another spreadsheet
別のスプレッドシートに編集する 現在のスプレッドシートの変更を別のスプレッドシートで更新する ticcaje (で) gmail.com
画像 http://img97.imageshack.us/img97/240/picture1nns.png
残念ながら、しばらく更新されていません。コードを見た後、ダイアログ メッセージと return ステートメントがあるため、実際には完了していないと思います。
画像 http://img718.imageshack.us/img718/5264/pictureja.png
これは非常に便利なスクリプトになると思いますので、少し編集しましたが、実際にはコメントはありません。今は 100% 動作させる時間はありませんが、誰かが実際にそれを手に取って実行できることを期待して、ここに投稿します。
関数 onEdit(){
var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSpreadsheet = SpreadsheetApp.openById('0AntUWac3dtkUac3dtnhTjMwac3dtVjBiac3dtOXcac3dt'); // ここにスプレッドシート キーを入力します
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 ソース = sourcesRange.getValues();
var compareName = sources[currentSourceCellIndex-1][0];
戻る;
//Browser.msgBox("currentSourceCell: "+sources[currentSourceCellIndex-1][0]);return; // アクティブセル()
//Browser.msgBox("currentSourceCell: "+targetRowsCount);
// 戻る;
for (var i = 1; i < targetRowsCount; ++i) {
if (targetSources[i-1][0] == compareName){
targetSheet.deleteRow(i);
壊す;
}
}
// 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] = = ""))
//戻る;
//currentSourceCell = sourceSheet.getActiveCell();
rowToInsert = targetSheet.getLastRow();
targetSheet.insertRowAfter(rowToInsert);
var insertRange = targetSheet.getRange(rowToInsert + 1, 1, 1, targetSheet.getLastColumn());
var コロンネン = [];
var tbText = [];
for (var i = 1; i < 16; ++i) {
コロネン.プッシュ(i);
tbText.push(sources[sourceRows-1][i-1]);
}
//Browser.msgBox("ソース: "+tbText);return;
for (j = 0; j < kolonnen.length; j++) {
var zellRange = targetSheet.getRange(rowToInsert+1, コロンネン[j], 1, 1);
zellRange.setValue(tbText[j]);
}
}
スクリプトを編集することで元のコードにアクセスできますが、必要に応じて、ここにも投稿します。
関数 onEdito() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {
名前:「行く」、
関数名: "挿入行"
}
// 、
// {
// name: "ビルド ジャーナル",
// 関数名: "collectJournal"
// }
];
ss.addMenu("pastePlus", menuEntries);
}
関数 onEdit(){
var sourceSpreadsheetName = Browser.inputBox("ソース スプレッドシート");
//var sourceSpreadsheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
var files = DocsList.getFilesByType("スプレッドシート");
//var ファイル = SpreadsheetApp;
Browser.msgBox("currentSourceCell: " +ファイル);
//var sourceSpreadsheet;
for (var i = 0; i < files.length; ++i) {
var ファイル名 = ファイル [i].getName();
if (ファイル名 == sourceSpreadsheetName) {
var sourceSpreadsheet = SpreadsheetApp.openById(files[i].getId());
var シート = sourceSpreadsheet.getSheets();
var sourcesSheet = シート[1];
壊す;
}
}
var targetSpreadsheetName = "Probando スクリプト"; //DocsList.getFilesByType("スプレッドシート");
//var targetSpreadsheet;
for (var i = 0; i < files.length; ++i) {
var ファイル名 = ファイル [i].getName();
if (ファイル名 == targetSpreadsheetName) {
var targetSpreadsheet = SpreadsheetApp.openById(files[i].getId());
var シート = targetSpreadsheet.getSheets();
var targetSheet = シート[1];
壊す;
}
}
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 ソース = 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);
壊す;
}
}
var sourceRows = sourcesSheet.getLastRow();
var sourceColumns = sourcesSheet.getLastColumn();
var sourcesRange = sourcesSheet.getRange(1, 1, sourceRows, sourceColumns);
var ソース = 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] = = ""))
//戻る;
//currentSourceCell = sourceSheet.getActiveCell();
rowToInsert = targetSheet.getLastRow();
targetSheet.insertRowAfter(rowToInsert);
var insertRange = targetSheet.getRange(rowToInsert + 1, 1, 1, targetSheet.getLastColumn());
var コロンネン = [];
var tbText = [];
for (var i = 1; i < 16; ++i) {
コロネン.プッシュ(i);
tbText.push(sources[sourceRows-1][i-1]);
}
//Browser.msgBox("ソース: "+tbText);return;
for (j = 0; j < kolonnen.length; j++) {
var zellRange = targetSheet.getRange(rowToInsert+1, コロンネン[j], 1, 1);
zellRange.setValue(tbText[j]);
}
}
「変更」の意味にもよりますが=Master!A1、スレーブ シートのセル A1 に配置し、右下隅を完全に下にドラッグしてから、その選択範囲の右下隅を完全にドラッグすることができます。したがって、セル D8 には=Master!D8などが含まれます。