Добавляете текстовые входы и входные данные для загрузки изображений из простой HTML-формы в Google Таблицы с помощью сцHtml

Программисты Html
Ответить
Anonymous
 Добавляете текстовые входы и входные данные для загрузки изображений из простой HTML-формы в Google Таблицы с помощью сц

Сообщение Anonymous »

Я использую простую HTML-форму для сбора данных от пользователей и хочу добавить каждую отправку в отдельную строку в Google Sheets. На данный момент мне удается успешно добавлять текстовые поля в Google Таблицы, но когда я добавил логику для добавления изображений, я получаю ошибку, которую очень сложно расшифровать.
Вот HTML-файл:

Код: Выделить всё










Name:





Role:



--Select--
Associate
Partner
Volunteer



Neighborhood:



--Select--
Manhattan
Brooklyn
Queens
Bronx
Staten Island



Photo 1. Profile picture





Photo 2. First hobby picture





Photo 2.  Second hobby picture





Submit





Когда я следовал этому руководству, оно работало отлично: https://github.com/levinunnink/html-for ... ogle-sheet
Оригинальный Code.gs работает нормально:

Код: Выделить всё

const sheetName = 'Sheet1'
const scriptProp = PropertiesService.getScriptProperties()

function initialSetup () {
const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}

function doPost (e) {
const lock = LockService.getScriptLock()
lock.tryLock(10000)

try {
const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
const sheet = doc.getSheetByName(sheetName)

const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
const nextRow = sheet.getLastRow() + 1

const newRow = headers.map(function(header) {
return header === 'Date' ? new Date() : e.parameter[header]
})

sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}

catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}

finally {
lock.releaseLock()
}
}
Однако я обновил Code.gs, добавив логику для включения трех изображений, и теперь это не работает. Сообщение об ошибке: "error" : { "name" : "Exception"
Вот обновленный файл Code.gs, который не работает:

Код: Выделить всё

const sheetName = 'Sheet1'
const scriptProp = PropertiesService.getScriptProperties()

function initialSetup () {
const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}

function doPost (e) {
const lock = LockService.getScriptLock()
lock.tryLock(10000)

try {
const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
const sheet = doc.getSheetByName(sheetName)

const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
const nextRow = sheet.getLastRow() + 1

const newRow = headers.map(function(header) {
if(header === 'Photo1'){
var contentType = 'image/jpeg';
var image = e.parameter[header];
var image = image.getAs(contentType);

var file = DriveApp.createFile(image);
file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
sheet.getRange(NextRow, 4, 1, 1).setFormula("=IMAGE(\"https://drive.google.com/uc?export=view&id=" + file.getId() + "\")");
} else if(header === 'Photo2') {
var contentType = 'image/jpeg';
var image = e.parameter[header];
var image = image.getAs(contentType);

var file = DriveApp.createFile(image);
file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
sheet.getRange(NextRow, 5, 1, 1).setFormula("=IMAGE(\"https://drive.google.com/uc?export=view&id=" + file.getId() + "\")");

} else if(header === 'Photo3') {
var contentType = 'image/jpeg';
var image = e.parameter[header];
var image = image.getAs(contentType);

var file = DriveApp.createFile(image);
file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
sheet.getRange(NextRow, 6, 1, 1).setFormula("=IMAGE(\"https://drive.google.com/uc?export=view&id=" + file.getId() + "\")");

} else {
return header === 'Date' ? new Date() : e.parameter[header]
}

})

sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'message' : 'Thank you for your submission!'}))
.setMimeType(ContentService.MimeType.JSON)
}

catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'message' : 'There was an error in your submission. Please contact xxx@gmail.com.', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}

finally {
lock.releaseLock()
}
}
Другие вопросы/ответы, которые я нашел, касаются отдельных изображений без других входных данных формы, таких как текстовые данные.

Подробнее здесь: https://stackoverflow.com/questions/792 ... google-she
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»