Чтобы получить пользовательские данные из веб-приложения в Google Таблицы

Мне нужна помощь, чтобы развеять мои сомнения. Я создал таблицу WebApp, в которой пользователи просто заполняют свои данные, и как только он нажмет кнопку «Сохранить», данные автоматически переместятся в Google Таблицы. Однако этого не происходит. Может кто-нибудь, пожалуйста, помогите мне с этой проблемой.

До сих пор я пробовал использовать метод .getElementById, присваивая отдельным полям ввода отдельные идентификаторы.

Я также пробовал использовать .getElementById(with table ID) и метод строк и столбцов.

Пример: let label=document.getElementById("Master").rows[0].columns[1].value;

Прилагается лист, где есть вся кодировка.

<style>
  th {
    font-size : 13px;
    border : 1px solid black;
    border-radius: 5px;
  }
  table {
    margin-top : 20px;
    margin-left : 130px;
    font-size : 15px;
    text-align : center;
    border-spacing : 15px;
    border : 1px solid black;
  }
  td {
    border : 1px solid black;
    border-radius: 5px;
  }
  input {
    width : 56px;
    border : none;
    text-align : center;
  }
  button {
    width : 60px;
  }

  .heading {
    margin-top:50px;
    margin-top:20px;
    text-align:center
  }
</style>
<!DOCTYPE html>
<html>

<head>
  <base target = "_top">
  </head>

<body>
  <div class = "heading">
  <h2>KTRP FOLLOW UP AND MANAGEMENT SHEET</h2>
  </div>

  <table id = "Master">
    <tr>
        <th><b>Working Hours</b></th>
        <th><label type = "text">07AM to 08AM</label></th>
    </tr>
    
    <tr>
      <td style = "background-color:#B978F0">
        <label><b>Reference</b></label  text-align = "left">
      </td>
      <td style = "border:1px white">
       <select id = "mod">
       <option>V853132</option>
       <option>AB35469</option>
       <option>AB35511</option>
       <option>VC61764</option>
       <option>VC78159</option>
       <option>AB32871</option>
       <option>VC78183</option>
       </select>
      </td>
    </tr>
   
   <tr>
   <tr>
      <td style = "background-color:#00FF00"><label><b>Good Parts Qty</b></label></td>
      <td><input type = "number" id = "gqty"></td>
   </tr>
   
   <tr>
   
      <td style = "background-color:#FC0808"><label><b>Bad Parts Qty</b></label></td>
      <td><input type = "number" id = "bqty"></td>
   </tr>
   
   <tr>
   <tr>
      <td style = "background-color:#FFFF00"><label><b>Preventive Maintenance</b></label></td>
      <td><input type = "number" id = "pmaint"></td>
   </tr>
   
   <tr>
   <tr>
      <td style = "background-color:#FFFF00"><label><b>Planned Stoppage</b></label></td>
      <td><input type = "number" id = "trial0"></td>
    </tr>
    
     <tr>
      <td style = "background-color:#93C47D"><label><b>Changeover</b></label></td>
      <td><input type = "number" id = "co"></td>
      </tr>

    <tr>
      <td style = "background-color:#93C47D"><label><b>Legal Breaks</b></label></td>
      <td><input type = "number" id = "break"></td>
      </tr>
      
      <tr>
      <td style = "background-color:#E83C3C"><label><b>Non quality stops</b></label></td>
      <td><input type = "number" id = "nqstop"></td>
      </tr>
      
      <tr>
        <td style = "background-color:#76A5AF"><label><b>Breakdowns</b></label></td>
      <td><input type = "number" id = "bds"></td>
      </tr>
      
      <tr>
      <td style = "background-color:#76A5AF"><label><b>Micro Stoppages</b></label></td>
      <td><input type = "number" id = "msds"></td>
      </tr>
      
       <tr>
      <td style = "background-color:#A38BE9"><label><b>Organisation Malfunctions</b></label></td>
      <td><input type = "number" id = "org"></td>
      </tr>

      <tr>
      <td><label><b>Direct Labour</b></label></td>
      <td><input type = "number" id = "dl"></td>
      </tr>
      
      
      <tr>
      <td style = "border:1px white"> </td>
      <td style = "border:1px white"><button id = "btn">Save</button></td>
      </tr>
      
       </table>
       <script>
    document.getElementById("btn").addEventListener("click",doSave);

      function doSave() {

        let prodDetails = {
        label=document.getElementById("Master").rows[0].columns[1].value;
        model=document.getElementById("Master").rows[1].columns[1].value;
        goodpartsqty=document.getElementById("Master").rows[2].columns[1].value;
        badpartsqty=document.getElementById("Master").rows[3].columns[1].value;
        preventivemaint=document.getElementById("Master").rows[4].columns[1].value;
        plannedstop=document.getElementById("Master").rows[5].columns[1].value;
        changeover=document.getElementById("Master").rows[6].columns[1].value;
        legalbreak=document.getElementById("Master").rows[7].columns[1].value;
        nonquality=document.getElementById("Master").rows[8].columns[1].value;
        breakdown=document.getElementById("Master").rows[9].columns[1].value;
        microstoppage=document.getElementById("Master").rows[10].columns[1].value;
        organisation=document.getElementById("Master").rows[11].columns[1].value;
        directlabour=document.getElementById("Master").rows[12].columns[1].value;
        }

        google.script.run.dataSave(prodDetails);
      }
    </script>

</body>
</html>

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

Wicket 06.08.2024 17:31

Привет... Спасибо за ваш ценный ответ. Но я не занимаюсь программированием. Просто попробуйте научиться программировать, а также не знакомы с этим сайтом. Будет лучше, если вы просмотрите лист и поможете мне.

Sunil Panda 06.08.2024 18:32

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

Cooper 06.08.2024 21:10

Каждый элемент должен иметь уникальный идентификатор

Cooper 07.08.2024 05:17

Большое спасибо за ваш вклад. Но уже есть уникальный идентификатор, например - mod, gqty, bqty, pmaint.

Sunil Panda 07.08.2024 09:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
5
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С объявлением объекта prodDetails есть несколько проблем.

  1. Вместо = следует использовать : или сначала объявить его как пустой объект, а затем присвоить значение каждому из свойств.

  2. Для columns не существует объекта HTMLTableCellElement. Вместо этого используйте cells.

  3. Значение элементов select и input внутри таблицы нельзя получить непосредственно из HTMLTableCellElement. Вместо этого вы должны сначала получить элемент select или input, а затем получить значение.

Примеры изменений, которые необходимо применить к объявлению prodDetails

Чтобы получить заголовок столбца, из

document.getElementById("Master").rows[0].columns[1].value;

к

document.getElementById("Master").rows[0].cells[1].innerText;

Чтобы получить выбранное значение, из

document.getElementById("Master").rows[1].columns[1].value

к

document.getElementById("Master").rows[1].cells[1].children[0].value

Большое спасибо. Теперь это прекрасно работает. Я попытался указать индивидуальный идентификатор для каждого ввода внутри таблицы. Это тоже работает.

Sunil Panda 10.08.2024 17:30

Другие вопросы по теме