Google Script для заполнения HTML формы - PullRequest
0 голосов
/ 06 февраля 2020

Я создал скрипт в скриптах Google, чтобы взять электронную таблицу и успешно заполнить несколько документов Google. Я пытаюсь применить эту логику c для заполнения формы HTML, в основном нам нужна информация, сгенерированная пользователем (в нашем листе Google), чтобы заполнить форму HTML на веб-странице.

ВОПРОС: Как бы получить следующую функцию, чтобы не только открывать, но и записывать данные?

Это где я нахожусь (просто используя пример веб-страницы):

function testNew(){
  var js = " \
    <script> \
      window.open('https://colorlib.com/etc/cf/ContactFrom_v1/index.html', '_blank', 'width=800, height=600'); \
      google.script.host.close(); \
    </script> \
  ";
  var html = HtmlService.createHtmlOutput(js)
    .setHeight(10)
    .setWidth(100);
  SpreadsheetApp.getUi().showModalDialog(html, 'Now loading.'); // If you use this on Spreadsheet
//  DocumentApp.getUi().showModalDialog(html, 'Now loading.'); //  If you use this on Document
//  SlidesApp.getUi().showModalDialog(html, 'Now loading.'); //  If you use this on Slides
} 

Это пример того, что я сделал с Google Docs, пытаясь скопировать информацию:

function myFunction() {
      var data = Sheets.Spreadsheets.Values.get('google sheet ID HERE', 'A2:R300');
      // google doc template id, already got deal memo
      var templateId = 'google doc ID HERE';
      // loop through the values "i" is looping the rows, "#" is the column example: 0=a,1=b   
      for (var i = 0; i < data.values.length; i++) {
        var date = data.values[i][0];
        var email = data.values[i][1];
        // grab the google doc template, create a copy, and generate the new id
        var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
        // change the name of the new file
        DriveApp.getFileById(documentId).setName(companyName+ '-' + projectName+ '-' + 'Insurance Report');
        // get the document body as a variable
        var body = DocumentApp.openById(documentId).getBody();
        // replace values with google sheet data
        body.replaceText('##Date##', date);
        body.replaceText('##Email##', email);

Спасибо Вам за помощь!

1 Ответ

3 голосов
/ 06 февраля 2020

У меня есть много написанных мной функций, которые взаимодействуют со многими сторонними формами и веб-сайтами. Не позволяйте обмануть вас тем, что все, что есть в форме, - это понятный человеку способ «отправить» URL-адрес. Самый простой способ сделать это - использовать функцию UrlFetchApp.fetch(url, options) в скрипте Google Apps.

Я использую Chrome, но другие браузеры также имеют эту функцию:

  1. открыть Chrome, перейдите к форме и нажмите F12, чтобы открыть окно для разработчиков.
  2. Нажмите «Сеть»
  3. , заполните форму вручную, а затем просмотрите трафик c в окне «Сеть» и найдите POST, который ваш браузер отправил на сайт,
  4. С этим выделенным цветом вы увидите пару других вкладок для «Заголовки», «Предварительный просмотр», «Ответ»
  5. На вкладке «Заголовки» прокрутите вниз, и она покажет вам, что запрос был похож. Снимок экрана это и отправить эти переменные через UrlFetchApp.fetch () на веб-сайт в качестве «полезной нагрузки» и отформатирован как функция ниже.
  6. Посмотрите «URL запроса» в верхней части той же вкладки «Заголовки», и вы будете использовать его в качестве URL ниже:
function senddatatoform() {

var url = 'http://theurlthattheformpoststohere.com'; // this is the 'request url' as shown in your browser (not always the url of the form).  

var payload = {
     datapoint1: datapoint1value,
     datapoint2: datapoint2value,
     ... //continue with all required post data   
     }

var options = {
    method: "POST",
    payload: payload
    }

var response = UrlFetchApp.fetch(url,options);
/*this is where what you need to do next might vary -- if you're looking for a 'success' page, you might write some code here to verify that the http response is correct based on your needs.
*/ 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...