Как я могу получить имя файла из столбца URL-адресов в листах Google - PullRequest
0 голосов
/ 03 марта 2019

Я даже не могу начать регистрировать часы, которые я потратил, пытаясь выяснить это, хотя это было очень поучительно, я учил себя программировать на протяжении всего путешествия.

Может кто-нибудь, пожалуйста, воспользоваться контрабандой Диегокод (см. здесь: Получить имя файла из URL Google лист ), чтобы получить имена файлов не электронных таблиц?Я сделал все, что было в моих ограниченных знаниях, и я очень застрял.

По сути, у меня есть столбец URL в электронной таблице, из которого я хотел бы получить скрипт для получения имен файлов.Поскольку идентификатор остается статичным, но имя файла может меняться, я хочу иметь второй столбец «обновленных» имен файлов, которые соответствуют статическому идентификатору.

Я прикрепил ссылку на лист дляссылка.Огромное спасибо всем, кто может пролить свет на это!

https://docs.google.com/spreadsheets/d/1pBSGc92tGj0l-JlhQznsGfGT1Nfj2LqNN7pyM4M_69c/edit#gid=2015441637

1 Ответ

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

Получение имен файлов из URls

function getIdFromUrl(url) { 
  return url.match(/[-\w]{25,}/); 
}

function getFileNames() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Data');
  var rg1=sh.getRange(2,4,getColumnHeight(4,sh,ss)-1,1);//current column of urls
  var vA1=rg1.getValues();
  var rg2=sh.getRange(2,5,getColumnHeight(4,sh,ss)-1,1);//new column of file names
  var vA2=rg2.getValues();
  for(var i=0;i<vA1.length;i++){
    vA2[i][0]=DriveApp.getFileById(getIdFromUrl(vA1[i][0])).getName();
  }
  rg2.setValues(vA2);
}

function getColumnHeight(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  var col=col || sh.getActiveCell().getColumn();
  var lastrow=sh.getLastRow();
  if(lastrow==0)return 0;
  var rg=sh.getRange(1,col,lastrow,1);
  var vA=rg.getValues();
  while(vA.length>0 && vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...