2015-04-10 2 views
0

Я использую простую таблицу для регистрации задач, которые я должен делать для своих клиентов. Каждый раз, когда я достиг задания, я отправляю его в ячейку истории с информацией о добавлении даты. Теперь мне нужно автоматизировать этот процесс и есть сценарий:Скрипт Google Apps. Сделать работу скрипта в активной строке

function goal(){ 
var ss = SpreadsheetApp.getActiveSheet(); 
var formattedDate = Utilities.formatDate(new Date(),"GMT+5", "dd.MM.YY..HH:mm"); 
var num1 = ss.getRange("B7").getValue(); 
var num2 = ss.getRange("C7").getValue(); 
var num3 = ss.getRange("D7").getValue(); 
ss.getRange("D7").setValue(num3+"/"+num1+" "+num2); 
ss.getRange("B7").clear(); 
ss.getRange("C7").setValue(formattedDate); 
var range = ss.getRange("B7"); 
ss.setActiveRange(range); 
} 

A7 - имя клиента

B7 - Активная задача

C7 - Дата создания задачи

D7 - История всех заданий

У нас есть вопрос:

Теперь скрипт работает только в одном ряду, как я могу заставить его работать в активном диапазоне строк?

+0

Для этого можно использовать getActiveCell(): https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getActiveCell(), чтобы получить активную ячейку на листе, который возвращает диапазон а затем метод getRow(), чтобы получить значение строки этого объекта диапазона. Надеюсь, это поможет! – KRR

ответ

1
function goal(){ 
    var ss = SpreadsheetApp.getActiveSheet(); 
    var formattedDate = Utilities.formatDate(new Date(),"GMT+5", "dd.MM.YY..HH:mm"); 
    var row = ss.getActiveCell().getRow(); 
    var r = ss.getRange(row, 2, 1, 3); 
    var rValues = r.getValues(); 
    r.setValues([["", formattedDate, rValues[0][2] +"/"+rValues[0][0]+" "+rValues[0][1]]]); 
    ss.setActiveRange(ss.getRange(row, 2)); 
} 
+0

Он отлично работает! Спасибо! – Davagaz