2016-12-20 8 views
0

シート2のカラムノートの値を取得して、シート1のメモ欄に貼り付けようとしています。同じ列の会社価値。会社(シート2)に値を入力すると、会社(シート1)と同じ値を持つコードが検索されます。コードがCompanyと同じ値を見つけた場合、入力したNotes(シート2)の値は自動的にNotes(シート1)に入れられます。私はコード内でif/elseステートメントを使用しましたが、実行されていません。google appsスクリプトを使用してシート2からシート1にセルの自動コピー値を入力します

ご協力いただければ幸いです。

例:

シート1 enter image description here

シート2 enter image description here

は、ここに私のコードです:)

function onEdit() { 
 
    var sheetId = SpreadsheetApp.openById('1fx59GrC_8WEU5DCM5y2N8YR3PK936RLqZVknQ66WWUA'); //replace with source ID 
 
    var sourceSheet = sheetId.getSheetByName('Notes'); //replace with source Sheet tab name 
 
    var notesActiveCell = sourceSheet.getActiveCell(); 
 
    var notesRow = notesActiveCell.getRow(); 
 
    var notesComp = SpreadsheetApp.getActiveSheet().getRange('B' + notesRow.toString()); 
 

 
    
 
    var destSheet = sheetId.getSheetByName('Companies'); //replace with destination Sheet tab name 
 
    var compActiveCell = destSheet.getActiveCell(); 
 
    var compRow = compActiveCell.getRow(); 
 
    var companies = SpreadsheetApp.getActiveSheet().getRange('B' + compRow.toString()); 
 
    
 
    
 
    if (notesComp.getValues() == companies.getValues()) { 
 
    Logger.log(notesComp.getValues()); 
 
    var sourceRange = SpreadsheetApp.getActiveSheet().getRange('C' + notesRow.toString()); //assign the range you want to copy 
 
    var notesData = sourceRange.getValues(); 
 
    destSheet.getRange('F' + compRow.toString()).setValues(notesData); 
 
    } 
 
}

答えて

0

コードには多くのエラーがあります。私は非常に経験豊富なプログラマーではありませんが、あなたが言ったことは、私は以下のスクリプトはあなたに良い出発点を与えるべきだと言いました。

値を入力したときにスクリプトを実行するには、onEditトリガを追加する必要があります。

function onEdit(e) { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sourceSheet = ss.getActiveSheet(); 
var sourceCellRow = sourceSheet.getActiveCell().getRowIndex(); 
var sourceData = sourceSheet.getRange(sourceCellRow, 1, 1, 2).getValues(); 

var destSS = SpreadsheetApp.openById('Paste destination Spreadsheet ID here'); 
var destSheet = destSS.getSheetByName('Companies'); 
var searchData = destSheet.getRange(1, 1,  destSheet.getLastRow()).getValues(); 

for (var i = 0; i < searchData.length; i ++){ 
    if(searchData[i][0] == sourceData[0][0]){ 
     destSheet.getRange(i + 1, 2).setValue(sourceData[0][1]); 
     break; 
    }  
    } 
    } 
0

copyTo(destination)

コピーセルの別の範囲への細胞の範囲からのデータを使用してみてください。値と書式の両方がコピーされます。

// The code below will copy the first 5 columns over to the 6th column. 
var sheet = SpreadsheetApp.getActiveSheet(); 
var rangeToCopy = sheet.getRange(1, 1, sheet.getMaxRows(), 5); 
rangeToCopy.copyTo(sheet.getRange(1, 6)); 
} 

私はそれがあなたのonEdit()関数内で非常に貴重になると思う。\

あなたはまた、this google forum

function Copy() { 
var sss = SpreadsheetApp.openById('spreadsheet_key'); //replace with source ID 
var ss = sss.getSheetByName('Source'); //replace with source Sheet tab name 
var range = ss.getRange('A2:E6'); //assign the range you want to copy 
var data = range.getValues(); 

var tss = SpreadsheetApp.openById('spreadsheet_key'); //replace with destination ID 
var ts = tss.getSheetByName('SavedData'); //replace with destination Sheet tab name 
ts.getRange(ts.getLastRow()+1, 1,5,5).setValues(data); //you will need to define the size of the copied data see getRange() 
} 
からこのサンプルをチェックしたい場合があります
関連する問題