あなたがこれを行うことが新しい場所にこれらの列A、E、およびFをコピーするには:ハードコードコピーの場所ということ
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet1" && r.getColumn() == 73 && r.getValue()) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Quarterly Report");
if(targetSheet.getLastRow() == targetSheet.getMaxRows()) {
targetSheet.insertRowAfter(targetSheet.getLastRow());
}
//Changes Start Here
var myRow = targetSheet.getLastRow()+1;
s.getRange(row, 1).copyTo(targetSheet.getRange(myRow,1));
s.getRange(row, 5).copyTo(targetSheet.getRange(myRow,5));
s.getRange(row, 6).copyTo(targetSheet.getRange(myRow,6));
}
}
。異なる列のデータを必要とする場合は、1,5、および6を変更します。また、コードin this tutorialを使用して、格納する列とデータをより正確に判断することもできます。
//////////////////////////////////////////////////////////////////////////////////////////
//
// The code below is reused from the 'Reading Spreadsheet data using JavaScript Objects'
// tutorial.
//
//////////////////////////////////////////////////////////////////////////////////////////
以下の部分は、スプレッドシートからデータを読み取り、あなたのコード内でこれに基づいて、列のデータを取得し、配置するために、あなたのシートにヘッダーとして最初の行を使用して取得することができます。あなたはこれを利用するためにJavaScriptでObjectを使うことを見たいでしょう。私はコードに柔軟性を追加するためにそれを言及します。列をハードコーディングしても問題ありません。
EDIT: 一つに自分のコードの3行を入れ、行の特定の列に値を追加するための興味深い方法@utphx応答を見ます。だからではなく、
s.getRange(row, 1).copyTo(targetSheet.getRange(myRow,1));
s.getRange(row, 5).copyTo(targetSheet.getRange(myRow,5));
s.getRange(row, 6).copyTo(targetSheet.getRange(myRow,6));
の我々はまた、
targetSheet.appendRow([s.getRange(row, 1).getValue(),"","","",s.getRange(row, 5).getValue(),s.getRange(row, 6).getValue()]);
を使用することができ、彼はオブジェクトの彼の使用を経て獲得速度にcaptilaizeは値を取得する代わりにする一つの呼び出しを行う、行全体を読んでから返されますそれはコンマの間に、各セルの内容を定義し、ハードトンを得ることができるよう、私は、しかし、列の多いシート上でこれを使用することはできません
//Retrieve the values if the entire row
var source = s.getRange(row, 1, 1, numColumns).getValues();
var targetSheet = ss.getSheetByName("Quarterly Report");
targetSheet.appendRow([source[0][0],"","","",source[0][4],source[0][5]]);
:私は私の元の応答で行った3続く。だから、列Yに項目を追加すると大括弧で囲まれます。 "それは基本的に読み取ります:列の多くのスプレッドシートで
targetSheet.appendRow([column_A_Value,column_B_Value,column_C_Value,column_D_Value,column_E_Value,column_F_Value]);
が、私は間違いなくgetRowsData()関数を作成するために、上記のチュートリアルからの情報を使用します。ターゲットシートにヘッダー行を作成すると、次のコードでいずれかのシート(タブ)から列などを挿入または並べ替えることができます。以下は、より柔軟なソリューションになります。私はそれがより効率的であると主張しているわけではなく、エラーチェックもなく、より柔軟性があります。最後の行が最大の行である場合は、チェックを維持する必要はありませんので、あなたはまた、APPEND行を使用することができます
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
// var s =ss.getSheetByName("Current");
var r = ss.getActiveRange();
if(s.getName() == "Current" && r.getColumn() == 5 && r.getValue()) {
var row = r.getRow();
var rowIndex = row - 1;
var numColumns = s.getLastColumn();
var sourceRange = s.getRange(1, 1, row, numColumns);
// Create one JavaScript object per row of data from the Source data (the Current tab)
var data = getRowsData(s, sourceRange, 1);
// Create a JavaScript object for the Target data (the Quarterly Report tab)
var targetSheet = ss.getSheetByName("Quarterly Report");
var numRows = targetSheet.getLastRow();
numColumns = targetSheet.getLastColumn();
var targetRange = s.getRange(1, 1, 1, numColumns);
var targetHeaders = targetSheet.getDataRange().getValues().shift();
var saveData = createArray(numColumns, null);
//Save the data we will be adding to teh Target in the proper locations in the array
saveData[targetHeaders.indexOf('Name')] = data[rowIndex].name;
saveData[targetHeaders.indexOf('Subsidy')] = data[rowIndex].subsidy;
saveData[targetHeaders.indexOf('Last Update')] = data[rowIndex].lastUpdate;
//Save the data to teh Target
targetSheet.appendRow(saveData);
}
}
//Create an array with a given number of items and a given common value
function createArray(len, itm) {
var arr1 = [itm],
arr2 = [];
while (len > 0) {
if (len & 1) arr2 = arr2.concat(arr1);
arr1 = arr1.concat(arr1);
len >>>= 1;
}
return arr2;
}
//////////////////////////////////////////////////////////////////////////////////////////
//
// The code below is reused from the 'Reading Spreadsheet data using JavaScript Objects'
// tutorial.
//
//////////////////////////////////////////////////////////////////////////////////////////
// getRowsData iterates row by row in the input range and returns an array of objects.
// Each object contains all the data for a given row, indexed by its normalized column name.
// Arguments:
// - sheet: the sheet object that contains the data to be processed
// - range: the exact range of cells where the data is stored
// - columnHeadersRowIndex: specifies the row number where the column names are stored.
// This argument is optional and it defaults to the row immediately above range;
// Returns an Array of objects.
function getRowsData(sheet, range, columnHeadersRowIndex) {
columnHeadersRowIndex = columnHeadersRowIndex || range.getRowIndex() - 1;
var numColumns = range.getEndColumn() - range.getColumn() + 1;
var headersRange = sheet.getRange(columnHeadersRowIndex, range.getColumn(), 1, numColumns);
var headers = headersRange.getValues()[0];
return getObjects(range.getValues(), normalizeHeaders(headers));
}
// For every row of data in data, generates an object that contains the data. Names of
// object fields are defined in keys.
// Arguments:
// - data: JavaScript 2d array
// - keys: Array of Strings that define the property names for the objects to create
function getObjects(data, keys) {
var objects = [];
for (var i = 0; i < data.length; ++i) {
var object = {};
var hasData = false;
for (var j = 0; j < data[i].length; ++j) {
var cellData = data[i][j];
if (isCellEmpty(cellData)) {
continue;
}
object[keys[j]] = cellData;
hasData = true;
}
if (hasData) {
objects.push(object);
}
}
return objects;
}
// Returns an Array of normalized Strings.
// Arguments:
// - headers: Array of Strings to normalize
function normalizeHeaders(headers) {
var keys = [];
for (var i = 0; i < headers.length; ++i) {
var key = normalizeHeader(headers[i]);
if (key.length > 0) {
keys.push(key);
}
}
return keys;
}
// Normalizes a string, by removing all alphanumeric characters and using mixed case
// to separate words. The output will always start with a lower case letter.
// This function is designed to produce JavaScript object property names.
// Arguments:
// - header: string to normalize
// Examples:
// "First Name" -> "firstName"
// "Market Cap (millions) -> "marketCapMillions
// "1 number at the beginning is ignored" -> "numberAtTheBeginningIsIgnored"
function normalizeHeader(header) {
var key = "";
var upperCase = false;
for (var i = 0; i < header.length; ++i) {
var letter = header[i];
if (letter == " " && key.length > 0) {
upperCase = true;
continue;
}
if (!isAlnum(letter)) {
continue;
}
if (key.length == 0 && isDigit(letter)) {
continue; // first character must be a letter
}
if (upperCase) {
upperCase = false;
key += letter.toUpperCase();
} else {
key += letter.toLowerCase();
}
}
return key;
}
// Returns true if the cell where cellData was read from is empty.
// Arguments:
// - cellData: string
function isCellEmpty(cellData) {
return typeof(cellData) == "string" && cellData == "";
}
// Returns true if the character char is alphabetical, false otherwise.
function isAlnum(char) {
return char >= 'A' && char <= 'Z' ||
char >= 'a' && char <= 'z' ||
isDigit(char);
}
// Returns true if the character char is a digit, false otherwise.
function isDigit(char) {
return char >= '0' && char <= '9';
}
をあなただけを意味するかはtehのリンクチュートリアルから必要なコードを含んでいます列A、E、Fをコピー先の行にコピーしますか?それらを同じ列または列A〜Cに入れたいですか? (複数のgetRange呼び出しがあります) –