Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- В Таблице должен быть лист "лист с ссылками", в нем, в первом столбце должны быть ссылки или ID Таблиц, скрипт будет идти по ссылками, обходить каждый лист и искать формулы IMPORTRANGE, вытаскивать из них ссылки и вставлять их в строку. Далее скрипт будет красить ячейку с ссылкой на Таблицу / ID в красный цвет. Дальше скрипт перейдет к первой не красной ссылке / ID и всё повторится.
- */
- function get_ids_importrange() {
- const ss = SpreadsheetApp.getActive();
- const sh = ss.getSheetByName('лист с ссылками');
- const dr = sh.getDataRange();
- const d = dr.getValues();
- const colours = dr.getBackgrounds();
- for (var n = 1; n < d.length; n++) {
- try {
- if (colours[n][0] == '#ff0000') continue;
- const obj = {};
- const s0 = SpreadsheetApp.openById(getIdFromUrl(d[n][0]));
- const sheets = s0.getSheets();
- sheets.forEach(f => f.getDataRange().getFormulas().forEach(row => row.forEach(cell => getIdFromUrl(cell) ? obj[getIdFromUrl(cell)] = true : '')))
- var values = Object.keys(obj);
- if (!values.length) {
- sh.getRange(n + 1, 2, 1, 1).setValue('-');
- continue;
- };
- values = [values];
- sh.getRange(n + 1, 2, values.length, values[0].length).setValues(values);
- } catch (err) {
- sh.getRange(n + 1, 2, 1, 1).setValue(err.message);
- }
- sh.getRange(n + 1, 1).setBackground('red');
- SpreadsheetApp.flush();
- }
- };
- function getIdFromUrl(url) {
- return url.match(/[\w]{33,}/g);
- };
Advertisement
Add Comment
Please, Sign In to add comment