From db4d00d9fd5d23c1a64ff55bcfe49b34ede05160 Mon Sep 17 00:00:00 2001 From: tanaikech Date: Tue, 1 Feb 2022 13:32:23 +0900 Subject: [PATCH] 1st commit --- .codeclimate.yml | 27 +++ HtmlFormApp.js | 259 +++++++++++++++++++++ LICENCE | 8 + README.md | 583 +++++++++++++++++++++++++++++++++++++++++++++++ appsscript.json | 6 + images/fig1.png | Bin 0 -> 78543 bytes 6 files changed, 883 insertions(+) create mode 100644 .codeclimate.yml create mode 100644 HtmlFormApp.js create mode 100644 LICENCE create mode 100644 README.md create mode 100644 appsscript.json create mode 100644 images/fig1.png diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..2159364 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,27 @@ +--- +engines: + duplication: + enabled: true + config: + languages: + - ruby + - javascript + - python + - php + eslint: + enabled: true + fixme: + enabled: true +ratings: + paths: + - "**.inc" + - "**.js" + - "**.jsx" + - "**.module" + - "**.php" + - "**.py" + - "**.rb" +exclude_paths: +- "tests/" +- "spec/" +- "**/vendor/" diff --git a/HtmlFormApp.js b/HtmlFormApp.js new file mode 100644 index 0000000..a480296 --- /dev/null +++ b/HtmlFormApp.js @@ -0,0 +1,259 @@ +/** + * GitHub https://github.com/tanaikech/HtmlFormApp
+ * Library name + * @type {string} + * @const {string} + * @readonly + */ +var appName = "HtmlFormApp"; + +/** + * Append HTML form data to Spreadsheet.
+ * @param {object} object Object including formData returned from HtmlFormObjectParserForGoogleAppsScript_js. + * @return {object} object Object including Class Spreadsheet, Class Sheet, Class Range of the row put the values, values + */ +function appendFormData(object) { + return new HtmlFormApp(object).appendFormData(); +} +; +(function(r) { + var HtmlFormApp; + HtmlFormApp = (function() { + var checkHeader, checkObject, convObj; + + class HtmlFormApp { + constructor(obj_) { + this.name = appName; + this.obj = {}; + checkObject.call(this, obj_); + } + + appendFormData() { + var header, keyConvertObj, range, values; + header = checkHeader.call(this); + keyConvertObj = Object.entries(this.formObject).reduce((o, [k, v]) => { + o[k.trim().toLocaleLowerCase()] = v; + return o; + }, {}); + values = [ + header.map((hv) => { + var h; + if (this.headerConversion && (!this.ignoreHeader || this.ignoreHeader === false)) { + hv = this.headerConversion[hv] || hv; + } + h = hv.trim().toLocaleLowerCase(); + if (h === "date") { + return new Date(); + } else if (keyConvertObj[h] && keyConvertObj[h].some((e) => { + return e.files; + })) { + return (keyConvertObj[h].reduce((ar, + e) => { + if (e.files && e.files.length > 0) { + e.files.forEach(({bytes, + mimeType, + filename}) => { + return ar.push(this.obj.folder.createFile(Utilities.newBlob(bytes, + mimeType, + filename)).getUrl()); + }); + } else { + ar.push(""); + } + return ar; + }, + [])).join(this.delimiter); + } else if (keyConvertObj[h] && (keyConvertObj[h][0].type === "checkbox" || keyConvertObj[h][0].type === "radio")) { + if (this.choiceFormat && this.choiceFormat === true) { + return (keyConvertObj[h].map(({checked, + value}) => { + return `${value}(${checked === true ? "checked" : "unchecked"})`; + })).join(this.delimiter); + } + return (keyConvertObj[h].reduce((arr, + {checked, + value}) => { + if (checked === true) { + arr.push(value); + } + return arr; + }, + [])).join(this.delimiter); + } + if (keyConvertObj[h]) { + if (keyConvertObj[h].length === 1) { + return keyConvertObj[h][0].value; + } else { + return (keyConvertObj[h].map(({value}) => { + return value; + })).join(this.delimiter); + } + } + return ""; + }) + ]; + if (this.lastRow === 0 && (!this.ignoreHeader || this.ignoreHeader === false)) { + values.unshift(header); + } + range = this.sheet.getRange(this.lastRow + 1, 1, values.length, values[0].length); + range.setValues(values); + return { + spreadsheet: this.obj.spreadsheet, + sheet: this.sheet, + range: range, + values: values + }; + } + + }; + + HtmlFormApp.name = appName; + + checkHeader = function() { + var header, hedFromSheet, oo; + header = ["Date", ...this.orderOfFormObject]; + if (this.lastRow > 0 && (!this.ignoreHeader || this.ignoreHeader === false)) { + hedFromSheet = this.sheet.getRange(1, 1, 1, this.sheet.getLastColumn()).getValues()[0]; + oo = this.orderOfFormObject.reduce((o, e) => { + o[e.toLocaleLowerCase()] = true; + return o; + }, {}); + if (hedFromSheet.some((e) => { + return oo[e.toLocaleLowerCase()]; + })) { + header = hedFromSheet; + } + } + return header; + }; + + checkObject = function(obj_) { + var _; + if (!obj_) { + throw new Error("Object for using this library is not given."); + } + if (!obj_.hasOwnProperty("formData")) { + throw new Error("'formData' is not included in your object."); + } + this.obj = obj_; + if (this.obj.formData.hasOwnProperty("parameters") && this.obj.formData.hasOwnProperty("parameter")) { + if (this.obj.formData.hasOwnProperty("postData") && this.obj.formData.postData.hasOwnProperty("contents") && this.obj.formData.postData.hasOwnProperty("name") && this.obj.formData.postData.name === "postData") { + if (this.obj.formData.postData.contents === "") { + throw new Error(`Request body is not found.`); + } + try { + this.obj.formData = JSON.parse(this.obj.formData.postData.contents); + } catch (error) { + _ = error; + this.obj.formData = convObj.call(this, this.obj.formData.parameters); + } + } else if (!this.obj.formData.parameter.hasOwnProperty("formData")) { + this.obj.formData = Object.fromEntries(Object.entries(this.obj.formData.parameters).map(([k, v]) => { + return [ + k, + v.map((e) => { + return { + value: e + }; + }) + ]; + })); + } else { + if (!this.obj.formData.parameter.hasOwnProperty("formData") || this.obj.formData.parameter.hasOwnProperty("formData") === "") { + throw new Error(`Query parameter is not found.`); + } + this.obj.formData = JSON.parse(this.obj.formData.parameter.formData); + } + } + this.obj.folder = this.obj.folderId && this.obj.folderId !== "" ? DriveApp.getFolderById(this.obj.folderId) : DriveApp.getRootFolder(); + if (!Object.values(this.obj.formData).every((e) => { + return Array.isArray(e); + })) { + this.obj.formData = convObj.call(this, this.obj.formData); + } + if (this.obj.spreadsheetId && this.obj.spreadsheetId !== "") { + this.obj.spreadsheet = SpreadsheetApp.openById(this.obj.spreadsheetId); + this.obj.new = false; + } else { + this.obj.spreadsheet = SpreadsheetApp.create("spreadsheetCreatedByHtmlFormApp"); + this.obj.new = true; + } + if (!this.obj.spreadsheetId) { + this.obj.spreadsheetId = this.obj.spreadsheet.getId(); + } + if (this.obj.sheetName && this.obj.sheetName !== "") { + this.obj.sheet = this.obj.spreadsheet.getSheetByName(this.obj.sheetName); + if (!this.obj.sheet) { + throw new Error(`Sheet of ${this.obj.sheetName} is not found.`); + } + } + if (this.obj.sheetId && this.obj.sheetId !== "") { + this.obj.sheet = this.obj.spreadsheet.getSheets().find((e) => { + return e.getSheetId() === this.obj.sheetId; + }); + if (!this.obj.sheet) { + throw new Error(`Sheet of ${this.obj.sheetId} is not found.`); + } + } + if (!this.obj.sheetName && !this.obj.sheetId) { + this.obj.sheet = this.obj.spreadsheet.getSheets()[0]; + } + this.sheet = this.obj.sheet; + this.formObject = this.obj.formData; + this.orderOfFormObject = this.formObject.orderOfFormObject || Object.keys(this.formObject); + this.headerConversion = this.obj.headerConversion; + this.ignoreHeader = this.obj.ignoreHeader; + this.lastRow = this.sheet.getLastRow(); + this.choiceFormat = this.obj.choiceFormat; + this.delimiter = this.obj.delimiterOfMultipleAnswers || ","; + this.valueAsRaw = this.obj.valueAsRaw || false; + if (!this.valueAsRaw) { + return Object.entries(this.formObject).forEach(([k, v]) => { + var t; + if (k !== "orderOfFormObject" && Array.isArray(v) && v[0].hasOwnProperty("type")) { + t = v[0].type.toLowerCase(); + if (t === "number") { + v.forEach((e, i) => { + return this.formObject[k][i].value = Number(e.value); + }); + } + if (t === "date") { + v.forEach((e, i) => { + return this.formObject[k][i].value = new Date(e.value + "T00:00:00"); + }); + } + if (t === "datetime-local") { + return v.forEach((e, i) => { + return this.formObject[k][i].value = new Date(e.value); + }); + } + } + }); + } + }; + + convObj = function(obj_) { + return Object.fromEntries(Object.entries(obj_).map(([k, v]) => { + if (typeof v === "object" && v.hasOwnProperty("contents") && v.hasOwnProperty("length") && v.hasOwnProperty("name") && v.hasOwnProperty("type")) { + v = this.obj.folder.createFile(v).getUrl(); + } + return [ + k, + Array.isArray(v) ? v.map((e) => { + return { + value: e + }; + }) : [ + { + value: v + } + ] + ]; + })); + }; + + return HtmlFormApp; + + }).call(this); + return r.HtmlFormApp = HtmlFormApp; +})(this); diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..243be7c --- /dev/null +++ b/LICENCE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2022 Kanshi TANAIKE + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..2113e5f --- /dev/null +++ b/README.md @@ -0,0 +1,583 @@ +# HtmlFormApp + + +[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENCE) + + + +# Overview + +![](images/fig1.png) + +This is a Google Apps Script library for parsing the form object from HTML form and appending the submitted values to the Spreadsheet. + + + +## Description + +There is Google Form in the Google service. Google Form can parse the submitted data and put it in the Spreadsheet. But when we want to use the custom form, it is required to use the HTML form on Web Apps, dialog, and sidebar. In this case, it is required to prepare Javascript and Google Apps Script for parsing the form object from the HTML form and appending the parsed values to Spreadsheet. Recently, a bug of the built-in parser from the Javascript side to the Google Apps Script side for parsing the form object from the HTML form had been removed. [Ref](https://tanaikech.github.io/2021/12/09/fixed-google-apps-script-web-app-html-form-file-input-fields-not-in-blob-compatible-format/) But, in the current stage, this bug is removed for only Web Apps. Unfortunately, for the dialog and sidebar, this bug has never been removed. And also, unfortunately, the built-in parser from the Javascript side to the Google Apps Script side cannot be used for the multiple files of the input tag. And, this cannot be used except for `google.script.run`. For example, when the HTML form including the files is submitted using "action" of the form tag, the file content is not included. And then, when the form object is retrieved, it is required to parse the object and put it in the Spreadsheet. From these situations, I thought that when this process can be run using the libraries, that might be useful for users. So I created this. + +This Google Apps Script library uses a Javascript library of [HtmlFormObjectParserForGoogleAppsScript_js](https://github.com/tanaikech/HtmlFormObjectParserForGoogleAppsScript_js). The form object from the HTML form is parsed using the Javascript library and sent to Google Apps Script side, and the object from Javascript is parsed and put to Spreadsheet using this Google Apps Script library. + +# Library's project key + +``` +1uLJrVXGaI-ceHFl_VC1U5jcynKpR2qnNG2tNPd03QJZw1jCcKw2_Oiwh +``` + +# Methods + +| Methods | Description | +| :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [appendFormData(object)](#appendFormData) | Parsing the form object parsed by [HtmlFormObjectParserForGoogleAppsScript_js](https://github.com/tanaikech/HtmlFormObjectParserForGoogleAppsScript_js) and append the value to Spreadsheet. | + +## About scopes + +This library use the scopes of `https://www.googleapis.com/auth/drive` and `https://www.googleapis.com/auth/spreadsheets`. + + + +# Usage: + +## 1. Install library + +In order to use this library, please install this library as follows. + +1. Create a GAS project. + + - You can use this library for the GAS project of both the standalone type and the container-bound script type. + +1. [Install this library](https://developers.google.com/apps-script/guides/libraries). + + - Library's project key is **`1uLJrVXGaI-ceHFl_VC1U5jcynKpR2qnNG2tNPd03QJZw1jCcKw2_Oiwh`**. + +## Methods + + + +### appendFormData + +This method parses the form object parsed by [HtmlFormObjectParserForGoogleAppsScript_js](https://github.com/tanaikech/HtmlFormObjectParserForGoogleAppsScript_js) and appends the value to Spreadsheet. + +```javascript +// These are all options. +const obj = { + formData: formData, + spreadsheetId: "###", + sheetName: "###", + sheetId: "###", + folderId: "###", + headerConversion: {"header value of Spreadsheet": "name of HTML input tag",,,}, + ignoreHeader: true, + choiceFormat: true, + delimiterOfMultipleAnswers: "\n", + valueAsRaw: true +}; +const res = HtmlFormApp.appendFormData(obj); +console.log(res) +``` + +#### Input object + +- **formData**: Form object from HtmlFormObjectParserForGoogleAppsScript_js + +- **spreadsheetId**: Spreadsheet ID you want to put the values. + + - When `spreadsheetId` is not used, the values are put to the 1st sheet of the created new Spreadsheet. + +- **sheetName**: Sheet name you want to put the values. Default is 1st sheet. When you don't use this, the value is put on the 1st sheet. + +- **sheetId**: Sheet ID you want to put the values. Default is 1st sheet. When you don't use this, the value is put on the 1st sheet. + +- **folderId**: Folder ID of the folder putting the submitted file. Default is "root". When you don't use this, the submitted files are put to the root folder. + +- **headerConversion**: When the header values in the sheet are different from each name of the HTML form, you can put the values to the sheet using this object. + + - For example, when the names of input tags in HTML form are "sample1", "sample2", "sample3", and when the header row is "test1", "test2", "test3", you can set `headerConversion` as `headerConversion: {"test1": "sample1", "test2": "sample2", "test3": "sample3"}`. + +- **ignoreHeader**: When this value is true, the submitted values are put to the sheet without using the header row. Default is false. + +- **choiceFormat**: When the HTML form includes the multiple-choice like the checkboxes and radio button, when this value is true, values both true and false are put to the sheet like `value1(checked)\nvalue2(unchecked)`. Default is false. When this value is false, only values when it is true are put on the sheet. + +- **delimiterOfMultipleAnswers**: When the multiple answers are included in an input tag, the values are put to the sheet using this delimiter. Default is ",". + +- **valueAsRaw**: When this value is `true`, the raw values retrieved from HTML form are used. Default is `false`. When this value is not used to `false`, for example, the date is converted to the date object. + +#### Output object + +This method of `appendFormData` returns the following object. + +```json +{ + "spreadsheet": "Class Spreadsheet", + "sheet": "Class Sheet", + "range": "Class Range", + "values": "values put to the sheet" +} +``` + +By using this, you can retrieve the range of the submitted row like `res.range.getRow()`. + +#### Simple sample script + +For example, when you want to use this library as a simple mode, you can use the following script. + +```javascript +const obj = { + formData: formData, + spreadsheetId: "###", +}; +const res = HtmlFormApp.appendFormData(obj); +console.log(res); +``` + +In this script, the form data is append to the 1st sheet of "spreadsheetId". + +# Sample scripts + +In the current stage, in order to submit the values using an HTML form, it is considered the following situations. Here, I would like to introduce the sample scripts for each situation using this library. + +"Multiple files", "Single file" and "No files" indicate whether the multiple files (using `multiple` in the input tag.) can be uploaded using the HTML form. Even when "Single file" is indicated, when you put the multiple input tags (`type="file"`) without using `multiple`, you can upload the multiple files. + +Of course, the values from the inputted texts, checkboxes, radio buttons, dropdown lists can be retrieved for all situations. + +| Situations | Multiple files | Single file | Sample scripts | +| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | :---------- | :------------------ | +| Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script side by `google.script.run` on the dialog, sidebar and Web Apps. | Yes | Yes | [Sample1](#sample1) | +| Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script by `fetch` of Javascript with the POST method on the dialog, sidebar, Web Apps and HTML in other site. | Yes | Yes | [Sample2](#sample2) | +| Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script by `fetch` of Javascript with the GET method on the dialog, sidebar, Web Apps and HTML in other site. | | | [Sample3](#sample3) | +| The form object is sent from HTML side to Google Apps Script by the parser like `google.script.run.myFunction(e.parentNode)` on the Web Apps. | | Yes | [Sample4](#sample4) | +| The form object is sent from HTML side to Google Apps Script by the parser like `google.script.run.myFunction(e.parentNode)` on the dialog and sidebar. | | | [Sample4](#sample4) | +| The form object is sent from HTML side to Google Apps Script by `
` of the form tag on the dialog, sidebar, Web Apps and HTML in other site. | | | [Sample5](#sample5) | +| The form object is sent from HTML side to Google Apps Script by `` of the form tag on the dialog, sidebar, Web Apps and HTML in other site. | | | [Sample6](#sample6) | + + + +## 1. Sample 1 + +Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script side by `google.script.run` on the dialog, sidebar. + +### HTML and Javascript side: `index.html` + +Please copy and paste this script to the script editor of Spreadsheet as a HTML file. This sample uses a dialog. + +```html + + Text1:
+ Text2:
+ Number:
+ Date:
+ File:
+ CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+ + + + +``` + +At `ParseFormObjectForGAS` method, the attribution of `name` of each input tag is used as the key of the parsed form object. + +### Google Apps Script side: `Code.gs` + +Please copy and paste this script to the script editor of Spreadsheet as a script file. And please set your Spreadsheet ID. And, please run `myFunction`. By this, a dialog is opened. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +```javascript +function myFunction() { + const html = HtmlService.createHtmlOutputFromFile("index"); + SpreadsheetApp.getUi().showDialog(html); +} + +function main(formData) { + const obj = { + formData: formData, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + console.log(res.range.getRow()); + return "Done"; +} +``` + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + + + +## 2. Sample 2 + +Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script side by `google.script.run` on Web Apps. + +### HTML and Javascript side: `index.html` + +Please create a HTML file including this script. And please set your Web Apps URL. + +```html +
+ Text1:
+ Text2:
+ Number:
+ Date:
+ File:
+ CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+ + + + +``` + +- At `ParseFormObjectForGAS` method, the attribution of `name` of each input tag is used as the key of the parsed form object. + +### Google Apps Script side: `Code.gs` + +```javascript +function doPost(e) { + const obj = { + formData: e, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + return ContentService.createTextOutput( + JSON.stringify({ message: "Done", row: res.range.getRow() }) + ); +} +``` + +1. Please copy and paste this script to the script editor of Google Apps Script. Of course, you can use both the standalone type and the container-bound script type as the Google Apps Script project. And please set your Spreadsheet ID. + +2. Please deploy Web Apps as `Execute as: Me` and `Who has access to the app: Anyone`. You can see how to deploy Web Apps at [here](https://developers.google.com/apps-script/guides/web). + + - When you modified the Google Apps Script, please modify the deployment as a new version. By this, the modified script is reflected in Web Apps. Please be careful about this. + - You can see the detail of this in the report of "[Redeploying Web Apps without Changing URL of Web Apps for new IDE](https://gist.github.com/tanaikech/ebf92d8f427d02d53989d6c3464a9c43)". + +3. Please open your HTML file using your browser. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + + + +## 3. Sample 3 + +Using HtmlFormObjectParserForGoogleAppsScript_js, the form object is sent from HTML side to Google Apps Script by `fetch` of Javascript with the GET method on the dialog, sidebar, Web Apps and HTML in other site. + +**In this sample, the files cannot be uploaded. Please be careful this.** + +### HTML and Javascript side: `index.html` + +Please create an HTML file including this script. And please set your Web Apps URL. Of course, you can also use this HTML and Javascript on a dialog and sidebar. + +```html +
+ Text1:
+ Text2:
+ Number:
+ Date:
+ + CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+ + + + +``` + +- At `ParseFormObjectForGAS` method, the attribution of `name` of each input tag is used as the key of the parsed form object. + +- **In this case, the maximum length of the URL is 2 kb. So if you want to include the file, please be careful this.** + +### Google Apps Script side: `Code.gs` + +```javascript +function doGet(e) { + const obj = { + formData: e, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + return ContentService.createTextOutput( + JSON.stringify({ message: "Done", row: res.range.getRow() }) + ); +} +``` + +1. Please copy and paste this script to the script editor of Google Apps Script. Of course, you can use both the standalone type and the container-bound script type as the Google Apps Script project. And please set your Spreadsheet ID. + +2. Please deploy Web Apps as `Execute as: Me` and `Who has access to the app: Anyone`. You can see how to deploy Web Apps at [here](https://developers.google.com/apps-script/guides/web). + + - When you modified the Google Apps Script, please modify the deployment as a new version. By this, the modified script is reflected in Web Apps. Please be careful about this. + - You can see the detail of this in the report of "[Redeploying Web Apps without Changing URL of Web Apps for new IDE](https://gist.github.com/tanaikech/ebf92d8f427d02d53989d6c3464a9c43)". + +3. Please open your HTML file using your browser. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + + + +## 4. Sample 4 + +The form object is sent from HTML side to Google Apps Script by the parser like `google.script.run.myFunction(e.parentNode)` on the Web Apps. + +**In this sample, only one file can be uploaded. Please be careful this.** + +Also, you can use this with the dialog and sidebar. But in the current stage, in order to parse `e.parentNode` with `google.script.run` on the dialog and sidebar, unfortunately, the file cannot be parsed. So please be careful about this. [Ref](https://issuetracker.google.com/issues/155109626) + +### HTML and Javascript side: `index.html` + +Please create an HTML file including this script. And please set your Web Apps URL. Of course, you can also use this HTML and Javascript on a dialog and sidebar. + +```html +
+ Text1:
+ Text2:
+ Number:
+ Date:
+ File:
+ CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+ + +``` + +- At `ParseFormObjectForGAS` method, the attribution of `name` of each input tag is used as the key of the parsed form object. + +- **In this case, the maximum length of the URL is 2 kb. So if you want to include the file, please be careful this.** + +### Google Apps Script side: `Code.gs` + +Please copy and paste this script to the script editor of Spreadsheet as a script file. And please set your Spreadsheet ID. And, please run `myFunction`. By this, a dialog is opened. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +```javascript +function myFunction() { + const html = HtmlService.createHtmlOutputFromFile("index"); + SpreadsheetApp.getUi().showDialog(html); +} + +function main(formData) { + const obj = { + formData: formData, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + console.log(res.range.getRow()); + return "Done"; +} +``` + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + + + +## 5. Sample 5 + +The form object is sent from HTML side to Google Apps Script by `
` of the form tag on the dialog, sidebar, Web Apps and HTML in other site. + +**In this sample, the files cannot be uploaded. Please be careful this.** + +### HTML and Javascript side: `index.html` + +Please create an HTML file including this script. And please set your Web Apps URL. Of course, you can also use this HTML and Javascript on a dialog and sidebar. + +```html + + Text1:
+ Text2:
+ Number:
+ Date:
+ CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+``` + +### Google Apps Script side: `Code.gs` + +```javascript +function doPost(e) { + const obj = { + formData: e, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + return ContentService.createTextOutput( + JSON.stringify({ message: "Done", row: res.range.getRow() }) + ); +} +``` + +1. Please copy and paste this script to the script editor of Google Apps Script. Of course, you can use both the standalone type and the container-bound script type as the Google Apps Script project. And please set your Spreadsheet ID. + +2. Please deploy Web Apps as `Execute as: Me` and `Who has access to the app: Anyone`. You can see how to deploy Web Apps at [here](https://developers.google.com/apps-script/guides/web). + + - When you modified the Google Apps Script, please modify the deployment as a new version. By this, the modified script is reflected in Web Apps. Please be careful about this. + - You can see the detail of this in the report of "[Redeploying Web Apps without Changing URL of Web Apps for new IDE](https://gist.github.com/tanaikech/ebf92d8f427d02d53989d6c3464a9c43)". + +3. Please open your HTML file using your browser. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + + + +## 6. Sample 6 + +The form object is sent from HTML side to Google Apps Script by `
` of the form tag on the dialog, sidebar, Web Apps and HTML in other site. + +**In this sample, the files cannot be uploaded. Please be careful this.** + +### HTML and Javascript side: `index.html` + +Please create a HTML file including this script. And please set your Web Apps URL. Of course, you can also use this HTML and Javascript on a dialog and sidebar. + +```html + + Text1:
+ Text2:
+ Number:
+ Date:
+ CheckBox: 1
+ CheckBox: 2
+ Radiobutton: 1
+ Radiobutton: 2
+ +
+``` + +### Google Apps Script side: `Code.gs` + +```javascript +function doPost(e) { + const obj = { + formData: e, + spreadsheetId: "###spreadsheetId###", + ignoreHeader: true, + }; + const res = HtmlFormApp.appendFormData(obj); + return ContentService.createTextOutput( + JSON.stringify({ message: "Done", row: res.range.getRow() }) + ); +} +``` + +1. Please copy and paste this script to the script editor of Google Apps Script. Of course, you can use both the standalone type and the container-bound script type as the Google Apps Script project. And please set your Spreadsheet ID. + +2. Please deploy Web Apps as `Execute as: Me` and `Who has access to the app: Anyone`. You can see how to deploy Web Apps at [here](https://developers.google.com/apps-script/guides/web). + + - When you modified the Google Apps Script, please modify the deployment as a new version. By this, the modified script is reflected in Web Apps. Please be careful about this. + - You can see the detail of this in the report of "[Redeploying Web Apps without Changing URL of Web Apps for new IDE](https://gist.github.com/tanaikech/ebf92d8f427d02d53989d6c3464a9c43)". + +3. Please open your HTML file using your browser. When you input the values into the dialog and click the submit button, the values are put on the 1st sheet of the Spreadsheet. + +- If you want to put the values using the header row, please set the header row to the Spreadsheet and remove `ignoreHeader: true,`. + +## IMPORTANT + +- **This library uses V8 runtime. So please enable V8 at the script editor.** + +- In the above method, when a file is uploaded, the maximum file size is 50 MB because of the current specification on the Google side. Please be careful about this. + +## Limitations + +As a limitation, in the current stage, the maximum blob size for creating files using Google Apps Script is 50 MB. So when the large file is uploaded, the file cannot be used. Please be careful about this. + +--- + + + +# Licence + +[MIT](LICENCE) + + + +# Author + +[Tanaike](https://tanaikech.github.io/about/) + + + +# Update History + +- v1.0.0 (February 1, 2022) + + 1. Initial release. + +[TOP](#top) diff --git a/appsscript.json b/appsscript.json new file mode 100644 index 0000000..d85dac9 --- /dev/null +++ b/appsscript.json @@ -0,0 +1,6 @@ +{ + "timeZone": "Asia/Tokyo", + "dependencies": {}, + "exceptionLogging": "STACKDRIVER", + "runtimeVersion": "V8" +} diff --git a/images/fig1.png b/images/fig1.png new file mode 100644 index 0000000000000000000000000000000000000000..a4da141869054e8da422d858d36db0d8b549585b GIT binary patch literal 78543 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 literal 0 HcmV?d00001