Переименовать имя файла в Google Таблицах с помощью скрипта Google Apps - PullRequest
0 голосов
/ 05 мая 2020

Я нахожу информацию о том, как изменять имена листов и даже именовать и размещать копии файлов на Диске, но есть ли какой-нибудь простой способ просто добавить строку в ячейке к имени файла (без копий, просто заменив текущий)? У меня есть сценарий для очистки определенных ячеек, и эта ячейка будет включена, поэтому планируется, что это имя файла затем go вернется к заголовку по умолчанию после очистки. Извините за то, что у меня нет примера, чтобы поделиться, потому что я не уверен, с чего мне начать.

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

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Надеюсь, я правильно понял ваш вопрос, но думаю, это должно сработать. Вы добавляете значение из ячейки A1 (= строка 1, столбец 1) в заголовок вашей текущей активной электронной таблицы.

function changeSpeadsheetName() 
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var range = sheet.getActiveSheet().getRange(1, 1).getValue(); //assuming you want to add the string in A1 to your title
  
  var name = sheet.rename('I renamed my spreadshet into ' + range);
 }
0 голосов
/ 05 мая 2020

Эта функция позволит вам установить имя файла электронной таблицы:

function onOpen() {
  SpreadsheetApp.getUi().createMenu('CaseMenu')
  .addItem('Change Case Number', 'changeCaseNumber')
  .addToUi();
}

function changeCaseNumber() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Cases');
  const rg=sh.getDataRange();
  var vA=rg.getValues();
  var tObj={};
  vA.forEach(function(r,i){
    tObj[r[0]]=r[1];
  });
  let r=SpreadsheetApp.getUi().prompt("Get Case Number", "Enter Case Number", SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
  if(r.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
    tObj.number=r.getResponseText();
    //DriveApp.getFileById(ss.getId()).setName(Utilities.formatString('%s - %s',tObj.prefix,tObj.number));
    ss.rename(Utilities.formatString('%s - %s',tObj.prefix,tObj.number));
    setCases(tObj);
  }
}

function setCases(dfltObj){
  var dfltH=Object.keys(dfltObj).length;
  if(dfltObj){
    var ss=SpreadsheetApp.getActive();
    var sh=ss.getSheetByName('Cases');
    var rg=sh.getRange(1,1,dfltH,2);
    var vA=rg.getValues();
    for(var i=0;i<dfltH;i++){
      vA[i][1]=dfltObj[vA[i][0]];
    }
    rg.setValues(vA);
  }
}   

Я использую скрытый лист для создания этой таблицы:

enter image description here

Вы можете использовать префикс, чтобы установить начало заголовка вашей электронной таблицы, а затем вы можете запустить функцию changeCaseNumber (), чтобы изменить вторую часть имени вашей электронной таблицы.

И если вы wi sh вы можете довольно легко изменить точную конфигурацию строки, потому что я использовал Utilties.formatString () для создания заголовка, и он использует формат sprintf, который знаком многим программистам. Он также записывает ваш последний номер дела и ваш текущий основной заголовок. Вы можете легко изменить его, перейдя в электронную таблицу «Дела», если вы используете sh.

...