Вы хотите поместить =HYPERLINK()
в последний столбец выбранных строк. Если мое понимание верно, как насчет этой модификации? Мне был интересен ваш вопрос. Поэтому я подумал о вашей проблеме, потому что подумал, что хотел бы изучить ваш вопрос.
Очки модификации:
- Например, когда вы выбираете ячейки "A1", "B2" и "C3", список диапазонов имеет 3 элемента в массиве. Это «А1», «В2» и «С3». Когда вы выбираете ячейки «A1», «A2» и «A3», список диапазонов имеет 1 элемент в массиве. Это «А1: А3».
- Из вашего сценария я подумал, что это может быть основной причиной вашей проблемы. Поэтому я хотел бы предложить следующий поток и модифицированный скрипт.
Поток:
- Сначала проанализируйте полученный список диапазонов.
- Таким образом, список разделяется непрерывными ячейками и отдельной ячейкой.
- Используя проанализированный список, импортируйте нужные значения.
Когда вы используете этот модифицированный скрипт, пожалуйста, запустите main()
.
Модифицированный скрипт:
function getFormula(e) {
var firstname = e[1];
var lastname = e[2];
var email = e[7];
var link = "http://192.168.80.1/d/?email=" + email + "&firstname=" + firstname + "&lastname=" + lastname;
return "=HYPERLINK(\"" + link + "\",\"click\")";
}
// Please run this function, when you use this modified script.
function main() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var selected_cells = ss.getActiveRangeList();
var rgs = selected_cells.getRanges();
for (var i = 0; i < rgs.length; i++) {
var numRows = rgs[i].getNumRows();
if (numRows > 1) {
var values = sh.getRange(rgs[i].getRow(), 1, numRows, lCol).getValues();
var formulas = values.map(function(e) {return [getFormula(e)]});
sh.getRange(rgs[i].getRow(), lCol + 1, numRows, 1).setFormulas(formulas);
} else {
var e = sh.getRange(rgs[i].getRow(), 1, 1, lCol).getValues()[0];
sh.getRange(rgs[i].getRow(), lCol + 1, 1, 1).setFormula(getFormula(e));
}
}
}
Примечание:
- Из вашего скрипта в модифицированном скрипте предполагается, что
firstname
, lastname
и email
находятся в столбце B, столбце C и столбце H соответственно. Если вы хотите изменить это, пожалуйста, измените его.
Если я неправильно понимаю ваш вопрос, извините.