Как я могу скопировать многострочный и многострочный текст внутри текстовой области и вставить на лист? - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь вставить текст в текстовое поле и вставить его в лист, как команда Ctrl + shift + V.Следующий скрипт вставляет только одну ячейку, но я хочу вставить способ, охватывающий весь лист (например, скопировать и вставить в Ctrl + shift + v).

Вот пример файла html: teste.html

<!DOCTYPE html>
<html>
  <!-- Document Head -->
  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <base target="_top">
    <!-- Add the Google Apps Script CSS file -->
    <link rel="stylesheet"     href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">

  <link rel="stylesheet"     href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js">    </script>

  <script>
  $( function() {
    $( "#tabs" ).tabs();
  } );
  </script>

<!-- Add Styling to your sidebar -->    
<!-- You can also refer to an external stylesheet - as with the link above or other css frameworks like Bootstrap or W3School's CSS -->
<!-- Try not to have styling elements within your html page and rather make of use external stylesheets -->
  <style>
    body {
      padding-left: 10px;
    }
    a:active {
      color: white;
      text-decoration: none:
   }
   a:hover {
      color: white;
      text-decoration: none:
   }
   a:link {
      color: white;
      text-decoration: none:
   }
   a:visited {
      color: white;
      text-decoration: none:
   }
   div {
      padding: 3px;
   }
    </style>
  </head>

  <!-- Document Body -->
  <body>

  <h2>Colar dados do GDL</h2>

<form id="myform">
  <div>
  <textarea  rows="150" cols="10" id = "textareagdl"     style="width:200px;height:150px;"></textarea>  
  </div>
  <div>
<button type="button"onclick="myFunction()">Copy</button>

<p id="demo"></p>

<script>
function myFunction() {
    var x = document.getElementById("textareagdl").value;
    google.script.run.colargdl(x);
}
</script>

  </div>
</form>

</body>
</html>

Вот файл google-сценария: codigo.gs

function onOpen() {
  showSidebar();
}

function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('teste')
      .setTitle('Create')
      .setWidth(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showSidebar(html);
}

function colargdl(dadoscsv){
var ss = SpreadsheetApp.getActive();
ss.getSheetByName('teste').getRange('A1:J120').clear();

var sheet = ss.getSheetByName('teste').getRange('A1').setValue(dadoscsv);

//dadoscsv.copyTo(sheet, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
//values.copyTo(sheet.getRange("A1"), {contentsOnly:true});
}

С уважением

1 Ответ

0 голосов
/ 27 мая 2018

В Google Apps Script вы можете позвонить range.setValues(), чтобы заполнить несколько ячеек одновременно.setValues принимает двумерный массив значений.Вам нужно будет преобразовать содержимое текстовой области в двумерный массив.Как только это будет сделано, вы можете позвонить range.setValues()

. Вам нужно получить диапазон, соответствующий размерам вашего массива - sheet.getRange(row, col, numRows, numCols) сделает это:

var data = [["one", "two", "three"], ["four", "five", "six"]];
var range = sheet.getRange(1, 1, data.length, data[0].length);
range.setValues(data);
...