2017-02-06 1 views
-1

Этот сценарий извлекает данные из листа и вставляет его в новый лист. Я хочу, чтобы вторая функция вставлялась в третий ряд каждый раз.Скрипт Google App - вставка данных в следующий столбец

Я хочу, чтобы результат -

Timestamp | Впечатления | CTR

function AggregateData() { 
Impressions(); 
CTR(); 
} 

function Impressions() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("G16:H16"); 
var values = source.getValues(); 
var sheet = ss.getSheetByName("Aggregate"); 
values[0][0] = new Date(); 
sheet.appendRow(values[0]); 
}; 

function CTR() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("F16:G16"); 
var values = source.getValues(); 
var sheet = ss.getSheetByName("Aggregate"); 
values[0][0] = new Date(); 
sheet.appendRow(values[0]); 
}; 

Этот код добавляет вторую функцию во второй столбец непосредственно под результат первой функции.

+0

Ищет некоторые пояснения: 1) По второй функции вы имеете в виду CTR()? 2) CTR() и Impressions() добавляют к другим листам, так как CTR может добавить ниже того, что было добавлено в Impressions? –

+0

Извините, я скорректировал код. Он должен быть на одном листе - Агрегат. В заказе будет отметка времени (col A) Impressions (col B) CTR (col C). Я предполагаю, что date() нужно будет удалить из функции CTR, поскольку она уже заполняется показом(). Спасибо за помощь. – user1314051

+0

Еще одна путаница в вашем вопросе заключается в начале вашего вопроса, когда вы говорите: «Я хочу, чтобы вторая функция вставлялась в третий ряд каждый раз». Однако, из приведенного выше комментария, я думаю, вы хотели сказать «вставить в третий столбец». Я прав, или я чего-то не хватает? Из вашего кода, который я собираю, вы пытаетесь заменить столбец F и столбец H на лист показателей на сводный лист –

ответ

0

Этот код скопирует ваши данные на новый лист в том порядке, в котором вы хотите. Однако я уменьшил его до одной функции. Причина код помещает новые данные в новой строке эта строка:

Sheet.appendRow(data) 

помещает данные, которые вы поставить на новую строку, которая пуста. Это также является причиной того, что я объединил две функции в одну.

function AggregateData() { 
Impressions(); 
} 

function Impressions() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Metrics"); 
var source = sheet.getRange("F16:H16"); 
var values = source.getValues(); 
var pasteValues = [] // create new array which will hold the data you need to be pasted into the aggregate Sheet 
pasteValues[0] = [] // Adding a second dimesion to the array 
var sheet = ss.getSheetByName("Aggregate"); 
// below 3 lines does the switch of data and adds the time stamp 
pasteValues[0][0] = new Date(); 
pasteValues[0][1] = values[0][2] //Copy the col h (impressions value) value into the new array 
pasteValues[0][2] = values[0][1] //Copy the col G (impressions value) value into the new array 
sheet.appendRow(pasteValues[0]); //Append the new array into the sheet 
}; 
+0

Thankyou так много. Как добавить следующий столбец после этого в тот же массив? – user1314051

+0

, чтобы добавить еще один столбец, просто добавьте новые данные в массив pasteValues, например, pasteValue [0] [3] = «новые данные Col здесь» –

+0

Thankyou J. Это беспокоило меня весь день. – user1314051

Смежные вопросы