Я пытаюсь сохранить данные из моего приложения реагирования в электронную таблицу Google, запустив почтовый запрос к сценарию приложения Google.
Пока я добавляю свой код. Почему-то он не добавляет информацию и, кроме того, он всегда обновляет страницу (я не знаю почему).
Электронная таблица опубликована c, и я опубликовал ее как веб-приложение с разрешением для всех, даже анонимно.
Кстати, когда я даю HTML форме атрибуты action = {addToSheet} и method = post, это работает, но нестабильно (работает только часть времени).
Спасибо заранее всем!
import React from "react";
import FormInput from "../FormInput/FormInput";
import {
ButtonContainer,
DetailsContainer,
StaticDetailsContainer,
FormContainer
} from "../Details/Details-styles";
import staticDetails from "../../assets/details-static.png";
import { usersTable } from "../../Firebase/Firebase";
import axios from "axios";
const addToSheets =
"https://script.google.com/macros/s/AKfycbxKQegNRwudHPHqkcxC0CiH1SizT1dwbzl5T_R9KATngvfsqwHn/exec";
class Details extends React.Component {
state = {
firstName: "",
lastName: "",
email: "",
phone: ""
};
handleSubmit = async event => {
await usersTable.push().set(this.state);
// add user to spreadsheet here.
axios
.post(`${addToSheets}`, this.state)
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
this.props.handleUIOnSubmit();
};
handleChange = event => {
const { value, name } = event.target;
this.setState({ [name]: value });
};
render() {
return (
<DetailsContainer>
<StaticDetailsContainer src={staticDetails} />
<FormContainer>
<form class="gform" onSubmit={this.handleSubmit}>
<FormInput
name="lastName"
type="text"
placeholder="שם משפחה"
value={this.state.lastName}
handleChange={this.handleChange}
/>
<FormInput
name="firstName"
type="text"
placeholder="שם פרטי"
value={this.state.firstName}
handleChange={this.handleChange}
/>
<FormInput
name="phone"
type="phone"
placeholder="טלפון"
value={this.state.phone}
handleChange={this.handleChange}
/>
<FormInput
name="email"
type="email"
placeholder='דוא"ל'
value={this.state.email}
handleChange={this.handleChange}
/>
<ButtonContainer type="submit">תאם לי שיעור</ButtonContainer>
</form>
</FormContainer>
</DetailsContainer>
);
}
}
export default Details;
function doPost(e) {
var monthTabs = [ "ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני",
"יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר" ];
var today = new Date();
var month = today.getMonth();
var ss = SpreadsheetApp.openById("19Vq3f26DiXL0Iyah13qIy963OgYyEeXdFE_Q8PMIiDE");
var sheet = ss.getSheetByName(monthTabs[month]);
ss.setActiveSheet(sheet);
var checkCell = sheet.getRange('A1');
if(checkCell.isBlank()){
ss.appendRow(["תאריך", "שם פרטי", "שם משפחה", "טלפון", "דואל"]);
}
var params = e.parameter;
var firstName = params.firstName;
var lastName = params.lastName;
var phone = params.phone;
var email = params.email;
ss.appendRow([today, firstName, lastName, phone, email]);
}