Массовое обновление ссылок в файлах на Google Диске?

Мы используем Google Диск (GAFE) для подготовки и представления учебных / учебных материалов. Мы хотели бы сохранить заархивированные версии прошлых итераций, а затем работать над новой копией для каждого последующего сеанса обучения.

Мне удалось сделать копию нашей учебной папки (используя ericyd gdrive-copy), и мы с радостью работаем над этим, НО ... файлы довольно сильно связаны между собой. Например, на слайдах будут ссылки на раздаточные материалы из Документов и задания в формате PDF, связанные с этим уроком. Когда я сделал копию всей структуры папок, файлы были скопированы, но все ссылки по-прежнему связаны с исходными файлами, тогда как на самом деле мы хотим, чтобы они были связаны с соответствующими копиями.

В этом есть смысл - очевидно, когда вы делаете копию файла, вы обычно не хотите одновременно изменять его содержимое. Однако, когда вы создаете архив для всей папки, в идеале вы хотели бы, чтобы ссылки в файлах также обновлялись.

Я могу составить электронную таблицу с идентификаторами файлов для каждой пары "оригинал и копия". Есть ли способ перебрать все документы / таблицы / слайды Google в папке и заменить исходные URL-адреса из файла электронной таблицы соответствующими URL-адресами копии?

Когда дело доходит до скриптов Google Apps, я практически новичок, поэтому пока я нашел Все ссылки в документе, и я предполагаю, что это будет частью ответа, я понятия не имею, что делать дальше.

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


person Alicja Z    schedule 18.05.2017    source источник


Ответы (1)


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

Во-первых, я позаимствовал код сценария, который нашел в Интернете, чтобы сгенерировать список файлов в папке Google Диска и их URL-адреса. Код выложу ниже. Это создает новый лист Google с именем "СПИСОК URL" (вы можете изменить имя, если хотите, в сценарии), который после того, как сгенерирован, вам нужно будет найти в своем недавнем списке на вашем Google Диске и перейти в папку, содержащую скопированные документы и ведомости.

Затем в Google Sheet, где у меня есть гиперссылки на мои документы, я создал дополнительную вкладку, также называемую СПИСОК URL-адресов, а в A1 добавил IMPORTRANGE () для импорта содержимого СПИСКА URL-адресов. Как только вы закончите со всем этим, вам нужно будет обновлять только эту ссылку с каждой копией, которую вы делаете, что значительно сокращает количество обновлений, которые вам нужно сделать, т.е. IMPORTRANGE () указывает на определенный URL-адрес, поэтому каждый вновь созданный СПИСОК URL-адресов будет иметь новый URL-адрес, на который должен указывать скопированный документ, содержащий ваши гиперссылки и IMPORTRANGE (). Надеюсь, это имеет смысл.

Затем для ваших гиперссылок потребуется формула вида = ГИПЕРССЫЛКА (ВПР (A1, 'СПИСОК URL-адресов'! $ A $ 1: $ B $ 10,2, FALSE), чтобы получить импортированные URL-адреса. Важно убедиться, что вы указывает, что диапазон поиска не отсортирован, или ЛОЖЬ, потому что порядок, в котором сценарий выводит список документов с URL-адресами, может измениться в зависимости от того, как папка сортируется во время запуска сценария, и гарантирует, что вы этого не сделаете Список должен быть отсортирован. Затем вы можете скопировать формулу в каждую ячейку, для которой вам нужна гиперссылка.

Не менее важно, чтобы ваш ключ поиска VLOOKUP () был точно таким, как он будет указан в вашем СПИСКЕ URL-адресов.

Этот метод позволил мне сократить количество шагов обновления гиперссылок с 9 шагов до 1 шага обновления IMPORTRANGE () каждый раз, когда я делаю копии.

Надеюсь, это поможет вам или кому-то другому!

Скопируйте и вставьте следующий сценарий в свой редактор сценариев:

// replace your-folder below with the folder name for which you want a listing
function listFolderContents() {
  var foldername = 'your-folder';
  var folderlisting = 'URL LIST ';

  var folders = DriveApp.getFoldersByName(foldername)
  var folder = folders.next();
  var contents = folder.getFiles();

  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  sheet.appendRow( ['name', 'link'] );

  var file;
  var name;
  var link;
  var row;
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    sheet.appendRow( [name, link] );     
  }  
};
person D H    schedule 29.12.2018