列5に情報が入力されている場合は、その行のデータを別のスプレッドシートにコピーする必要があります。私の関数の最初のif()は他の何かのためのもので、情報が列4に入力されたときにデータを並べ替えます。これは機能しますが、他のif()が機能する必要がありますが、機能しません。他の質問ですが、私の状況でうまくいく答えを見つけることができません。
function onEdit(event) {
var sheet=event.source.getActiveSheet();
var editedCell=sheet.getActiveCell();
var columnToSortBy=4;
var columnToArchive=5;
var tableRange= "A2:F!";
if(editedCell.getColumn() == columnToSortBy){
var range=sheet.getRange(tableRange);
range.sort( {column : columnToSortBy} );
}
else{
if(editedCell.getColumn() == columnToArchive){
var rowToBeMoved=editedCell.getRow();
var rangeToBeMoved=sheet.getRange("A" + rowToBeMoved + ":F" + rowToBeMoved);
var values=rangeToBeMoved.getValues();
var archiveSpreadSheet=SpreadsheetApp.openById("0AroBvchobu2edHNXQ3ZUQjI5TWJtWWZwa1UtcExPNnc");
var archiveSheet=archiveSpreadSheet.getSheetByName("archive");
archiveSheet.appendRow(values);
}
}
}
問題は、2番目のifブロック内の最後の3行にあることを確認しました。「varvalues=rangeToBeMoved.getValues();」という行の後に、その行の後または前のどこかにBrowser.msgBox( "hi")を置くと、そのメッセージが表示されるため、スクリプトの実行が停止するようですが、次の行の後に置くと、表示されません。問題は.openById()にありますか?ヘルプ!