Преобразовать из записи A1 в запись строки / списка? - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь написать скрипт для защиты всего листа от правок, кроме пары разделов.В настоящее время я получаю сообщение об ошибке «Не удается преобразовать массив в диапазон []».

В настоящее время у меня сложилось впечатление, что мне нужно записать его в строковой записи (я думаю, это так и называется), например (4,3,3,2) для ['C4: D7'] в формате (firstRow, firstColumn, Number of Row, Number of Columns), как я его сейчас понимаю.

это сценарий в настоящее время:

function Protect() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var protection = spreadsheet.protect();
  protection.setUnprotectedRanges(['C4:D7', 'C11:D13', 'C18:E20', 'F18:G18', 'C23:G25', 'C30:D32'])
};

Итак, мой главный вопрос: какой должна быть моя строка 4, потому что ничто из того, что я пробовал, не работает (и если вы используете пример, могу ли я попросить вас использовать реальный пример, потому что я обнаружил, что действительноизо всех сил, чтобы получить то, что делать, когда люди используют заполнители в своих ответах)

и что-то вроде подвопроса: есть ли способ преобразовать из A1 в строковую нотацию (своего рода наоборот)?

1 Ответ

0 голосов
/ 13 марта 2019

Так что для ясности:

Как сказал Танаике:

function Protect() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var protection = spreadsheet.protect();
  protection.setUnprotectedRanges(spreadsheet.getRangeList(['C4:D7', 'C11:D13', 'C18:E20', 'F18:G18', 'C23:G25', 'C30:D32']).getRanges());
}

И диалог защиты диапазонов подтверждает, что процесс сработал:

enter image description here

Возможный ответ на подвопрос:

function convertA1ToList(A1string) {
  var A1string=A1string || 'A1:Z100';//for debugging return for this is 1,1,100,26
  if(A1string) {
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getActiveSheet();
    var rg=sh.getRange(A1string);
    var rowStart=rg.getRow();
    var columnStart=rg.getColumn();
    var numrows=rg.getHeight();
    var numcols=rg.getWidth();
    return Utilities.formatString('%s,%s,%s,%s',rowStart,columnStart,numrows,numcols);      
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...