гиперссылки удалены в декларации Google App Script - PullRequest
1 голос
/ 04 февраля 2020

Мне нужен совет по управлению гиперссылками в массивах.

У меня есть функция, которая передает данные столбцов из моей электронной таблицы "Данные" в Google Sheet в мою электронную таблицу "Метрики" Google Sheet. Это работает достаточно хорошо.

Однако столбец, который я передаю, содержит гиперссылку.

(= HYPERLINK ("https://www.instagram.com/p/B5wVG5bn_6C/?igshid=1237ljejed19t", "Опубликовать ссылку # 2655")

При переносе значения в таблицу метрик гиперссылка удаляется.

Есть ли способ передать эти данные в другую электронную таблицу с удалением гиперссылки?

Вот функция, которую я использую для нее.

Благодарен за любую информацию.

function Feed_Update_Test() {

  var Metrics = SpreadsheetApp.openById("10Wl1B4AtdLHJXBbLbMQbSdtRyAb61biCWYpOQEEywIY"); 
  var Data = SpreadsheetApp.getActiveSpreadsheet(); // FEED Spreadsheet

  var FeedMetricSheet = Metrics.getSheetByName('Feature Metrics'); // Metrics Sheet 
  var FeedDataSheet = Data.getSheetByName("The Feed_Raw"); // Data Sheet

  var FeedDataRange = FeedDataSheet.getRange(2, 1, FeedDataSheet.getLastRow()-1,1); 

  var FeedDataLastRow = FeedDataSheet.getLastRow(); 

  var FeedMetricEmptyRange = FeedMetricSheet.getRange(2,1,FeedDataLastRow-1,1); 

  var FeedDataValues = FeedDataSheet.getRange(2,1,FeedDataLastRow-1,1).getValues(); 

  FeedMetricEmptyRange.setValues(FeedDataValues);

}

1 Ответ

0 голосов
/ 04 февраля 2020
  • Вы хотите скопировать значения, не удаляя формулы из активной электронной таблицы, в другую электронную таблицу с помощью скрипта Google Apps.

Если мое понимание правильное, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Модифицированный скрипт:

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

С:
var FeedDataValues = FeedDataSheet.getRange(2,1,FeedDataLastRow-1,1).getValues();
Кому:
var values = FeedDataRange.getValues();
var FeedDataValues = FeedDataRange.getFormulas().map(function([e], i) {return [e || values[i][0]]});

Ссылки:

Если я неправильно понял ваш вопрос и это не тот результат, который вам нужен, я прошу прощения.

Добавлено:

  • С ваш ответ , question. how do i modify this code to include 17 columns instead of just one?

К сожалению, я не могу понять о 17 column из вашего ответа. Так, например, когда вы хотите получить ячейки «A1: Q», состоящие из 17 столбцов, как насчет следующей модификации?

Модифицированный скрипт:

От:
var FeedDataRange = FeedDataSheet.getRange(2, 1, FeedDataSheet.getLastRow()-1,1); 
var FeedDataLastRow = FeedDataSheet.getLastRow(); 
var FeedMetricEmptyRange = FeedMetricSheet.getRange(2,1,FeedDataLastRow-1,1); 
var FeedDataValues = FeedDataSheet.getRange(2,1,FeedDataLastRow-1,1).getValues(); 
FeedMetricEmptyRange.setValues(FeedDataValues);
До:
var FeedDataRange = FeedDataSheet.getRange(2, 1, FeedDataSheet.getLastRow()-1, 17);
var values = FeedDataRange.getValues();
var FeedDataValues = FeedDataRange.getFormulas().map(function(e, i) {return e.map(function(f, j) {return f || values[i][j]})});
FeedMetricSheet.getRange(2, 1, FeedDataValues.length, FeedDataValues[0].length).setValues(FeedDataValues);
...