Google apps script Google表单数据存储在云SQL数据库中
我不熟悉谷歌表单和谷歌应用程序脚本。我有十个谷歌表单,在提交表单时,它们会填充相应的谷歌表单Google apps script Google表单数据存储在云SQL数据库中,google-apps-script,google-sheets,google-cloud-sql,google-forms,Google Apps Script,Google Sheets,Google Cloud Sql,Google Forms,我不熟悉谷歌表单和谷歌应用程序脚本。我有十个谷歌表单,在提交表单时,它们会填充相应的谷歌表单 现在,这里是我想要的,在提交表单时,我希望这些信息也存储在云SQL数据库中。哪些步骤可以实现这一点?接受响应并将其复制到电子表格的Google表单的正常数据流如下所示: 您有两个机会让表单提交触发器在您的云SQL数据库中复制表单响应;您可以从或触发 无论哪种方式,您都将有一个脚本,用于每次表单提交,以及一个包含响应值的事件对象。您的触发器函数应该使用连接到数据库-该链接包括一个引导您完成突出显示的介绍
现在,这里是我想要的,在提交表单时,我希望这些信息也存储在云SQL数据库中。哪些步骤可以实现这一点?接受响应并将其复制到电子表格的Google表单的正常数据流如下所示: 您有两个机会让表单提交触发器在您的云SQL数据库中复制表单响应;您可以从或触发 无论哪种方式,您都将有一个脚本,用于每次表单提交,以及一个包含响应值的事件对象。您的触发器函数应该使用连接到数据库-该链接包括一个引导您完成突出显示的介绍 例子 假设我们有一张表格,询问两个问题,“姓名”和“年龄”。这将导致我们的电子表格中有3列;“时间戳”加上每个问题一个 为了匹配这一点,我们使用相同的三列设置了一个云SQL数据库 写入云SQL数据库的Google Sheets Form submit触发器函数类似于以下未经测试的代码:
//用实际值替换此块中的变量。
变量地址='数据库IP地址';
var user='user_name';
var userPwd='user_password';
var db='数据库名称';
var dbUrl='jdbc:mysql://'+address+'/'+db;
//接收表单响应并复制到SQL表中的一行
函数handleFormSubmit(事件){
var conn=Jdbc.getConnection(dbUrl、user、userPwd);
var stmt=conn.prepareStatement('插入条目'
+“(时间戳、名称、年龄)值(?,?)”;
stmt.setString(1,event.namedvalue['Timestamp']);
stmt.setString(2,event.namedvalue['Name']);
stmt.setString(3,event.namedvalue['Age']);
stmt.execute();
}
如果您不想推出自己的解决方案,可以自动将数据从SQL发送到工作表,还可以将工作表中的更改同步回数据库。应用程序脚本可以完成其中的一部分,但我发现它有缺陷,并且对我们的用例有限,所以我构建了其他东西。有免费和付费两种计划
免责声明:我创建了这个。展示了我正在使用的解决方案的示例。我修改了Mogsdad的脚本以使用最新的参数和连接函数,并修复了语法错误
//Event is automatially passed on form submission when executed as a trigger.
//It contains objects that the user submitted
function writeToCloudSQL(event) {
//Note we get subname from the 'Instance Connection Name' of the Overview tab in the CloudSQL portal
var subname = 'see image';
var user = 'user';
var userPwd = 'pwd';
var db = 'db_name';
var dbUrl = 'jdbc:google:mysql://' + subname + '/' + db;
var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);
var stmt = conn.prepareStatement('INSERT INTO tbl_users (Timestamp, DL_ID, DOB, Last4SSN, HTMLGathered) values (NOW(), ?, ?, ?, \'No\');');
stmt.setString(1, event.namedValues['DL_ID']);
stmt.setString(2, event.namedValues['DOB']);
stmt.setString(3, event.namedValues['Last4SSN']);
stmt.execute();
}
查找子名称:
请在此处阅读有关事件参数的更多信息:
请在此处阅读有关连接字符串的详细信息:
还要确保您允许网络访问google脚本
Zapier与SQL Server和Google Sheets的集成可以做到这一点。我没有关系。
@MehrozIrshad Note-解决方案中有一个输入错误,已修复。(还没有测试!)我要试试thanx。@MehrozIrshad你试过了吗?我想知道
事件指的是什么?尝试了完全相同的事情,但当我检查事件时,
未定义。。。还获取了此错误TypeError:cannotreadproperty“namedValues”from undefined。
将事件
对象自动传递给从脚本触发器调用的函数。在这种情况下,设置一个触发器,从表单提交上的事件调用提供的函数。