0

すべての部品表で構成される Google スプレッドシートを「共有」しています。所有者だけがアクセスできるように、別のスプレッドシートの「マスター」を保持したい。共有スプレッドシートに挿入されたデータはマスター スプレッドシートに反映されるはずですが、共有スプレッドシートを編集してもマスター スプレッドシートには反映されません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

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]);
    }


}



于 2011-07-20T23:47:02.177 に答える
0

「変更」の意味にもよりますが=Master!A1、スレーブ シートのセル A1 に配置し、右下隅を完全に下にドラッグしてから、その選択範囲の右下隅を完全にドラッグすることができます。したがって、セル D8 には=Master!D8などが含まれます。

于 2010-12-10T12:01:15.347 に答える