Как получить ввод текста даты в настраиваемое диалоговое окно HTML для загрузки со значением из Google Sheets? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь изменить значение ввода текста в настраиваемом (HTML) диалоговом окне в Google Sheets, чтобы оно равнялось значению в моем Google Sheet.Как мне этого добиться?

Мне известен правильный формат даты, который необходимо применить, чтобы установить .value ввода текста.Я могу использовать сервис «Утилиты» в .gas.

Я пытался использовать событие onload="getDate()", чтобы запустить функцию, которая устанавливает значение с помощью var date = new Date() в getDate() и не получает значения из листа напрямую, но это, похоже, не работает.

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">

    <style>
    label {font-family: verdana;}

    body {
    border: 1px solid powderblue;
    padding: 30px;
    }
    </style>
  </head>
  <body  onload="getDate()">

<form id="myForm">
  <label>Task Number:</label><br>
  <input type="text" name="taskNumber" value="">
  <br><br>
   <label>Task Date:</label><br>
  <input type="date" name="taskDate" value="" id="demo" >
  <br><br>
   <label>Customer Name:</label><br>
  <input type="text" name="customerName" value="">
  <br><br>
   <label>Customer Site:</label><br>
  <input type="text" name="customerSite" value="">
  <br><br>
   <label>Status:</label><br>
  <select name="status">
  <option value="NOSTATUS">Choose</option>
  <option value="ON HOLD">ON HOLD</option>
  <option value="SCHEDULED">SCHEDULED</option>
  <option value="RESCHEDULE">RESCHEDULE</option>
  <option value="WORK IN PROGRESS">WORK IN PROGRESS</option>
  </select>
  <br><br>
   <label>Status Date:</label><br>
  <input type="date" name="statusDate" value="">
  <br><br>
   <label>Location:</label><br>
  <input type="text" name="location" value="">
  <br><br>
   <label>Description:</label><br>
  <input type="text" name="description" value="">
  <br><br>
  <input type="button" style="font-family: verdana;" value="Submit" onclick="uploadTask()">

</form> 

  <script>
  function success(msg) {
    alert(msg);
  }

  function uploadTask(){
    var form = document.getElementById("myForm").elements;
    var obj ={};
    for(var i = 0 ; i < form.length ; i++){
        var item = form.item(i);
        obj[item.name] = item.value;
    }
    google.script.run
    .withSuccessHandler(success)
    .uploadTask(obj);

    google.script.host.close();
  }

  function getDate(){
  var ss = SpreadsheetApp.openById('1CtH3uNeSiJcRd_ZKE3iWp7TEtAO_B7uCNatGJ7rHMeg');
  var monthly = ss.getSheetByName('MONTHLY');         
  var date = monthly.getRange(1, 1).getValue(); //The value of A:1 = 10/12/2000 date 

  date = Utilities.formatDate(date, Session.getScriptTimeZone(), "YYYY-MM-dd")

  document.getElementById("demo").value = date;

  }
  </script>
  </body>
</html>

1 Ответ

0 голосов
/ 25 октября 2018

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

Точки модификации:

  • В вашем скрипте показа есть скрипт GAS в HTML.ГАЗ нельзя напрямую запустить в HTML.
    • В этом случае я использовал google.script.run.
    • Сценарий GAS в getDate() был перемещен из ".html" в ".gs".

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

Пожалуйста, измените getDate() в файле ".html" на следующий скрипт.

function getDate() {
  google.script.run.withSuccessHandler((e) => {
    document.getElementById("demo").value = e;
  }).getDate();
}

Далее, пожалуйста, добавьте следующую функцию в ".gs "file.

function getDate() {
  var ss = SpreadsheetApp.openById('1CtH3uNeSiJcRd_ZKE3iWp7TEtAO_B7uCNatGJ7rHMeg');
  var monthly = ss.getSheetByName('MONTHLY');
  var date = monthly.getRange(1, 1).getValue(); //The value of A:1 = 10/12/2000 date
  return Utilities.formatDate(date, Session.getScriptTimeZone(), "YYYY-MM-dd");
}

Примечание:

  • Файл". gs "является одним из сценариев в проекте, который вы используете.Я думаю, что он используется для открытия диалогового окна.
  • Если в файле ".gs" есть те же имена функций, измените его.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...