Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google表单数据存储在云SQL数据库中_Google Apps Script_Google Sheets_Google Cloud Sql_Google Forms - Fatal编程技术网

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。
事件
对象自动传递给从脚本触发器调用的函数。在这种情况下,设置一个触发器,从表单提交上的
事件调用提供的函数。