【发布时间】:2014-02-04 02:20:25
【问题描述】:
- 目标是将数据从 Google Apps 脚本 A 传递到 Google Apps 脚本 B.
- 脚本 A 以用户身份执行权限发布。
- 脚本 B 以我的身份执行权限(所有者)发布。
至少我希望能够将Session.getActiveUser.getEmail() 从脚本 A 传递到脚本 B。
这就是我目前所拥有的......
脚本 A
// Script-as-app template.
function doGet() {
var app = UiApp.createApplication();
var button = app.createButton('Click Me');
app.add(button);
var handler = app.createServerHandler('myClickHandler');
button.addClickHandler(handler);
return app;
}
function myClickHandler(e) {
var url = "https://script.google.com/macros/s/AKfycbzSD3eh_SDnbA4a7VCkctHoMGK8d94SAPV2IURR3pK7_MwLXIb4/exec";
var payload = {
name : "Gene",
activeUser : Session.getActiveUser().getEmail(),
time : new Date()
};
var params = {
method : "post",
payload : payload
}
Logger.log("Hello World!");
var HTTPResponse;
try{
HTTPResponse = UrlFetchApp.fetch(url, params);
}catch(e){
Logger.log(e);
}
return HTTPResponse;
}
脚本 B
function doPost(e){
if(typeof e === 'undefined')
return;
var app = UiApp.createApplication();
var panel = app.add(app.createVerticalPanel());
for(var i in e.parameter){
panel.add(app.createLabel(i + ' : ' + e.parameter[i]));
Logger.log(i + ' : ' + e.parameter[i]);
}
ScriptProperties.setProperty('Donkey', 'Kong');
return app;
}
输出
转到脚本 A here 页面加载按钮。单击该按钮会导致“Hello World!”将被记录在脚本 A 的项目日志中,但脚本 B 的项目日志仍然为空。 TryCatch 不会记录任何错误。
【问题讨论】:
-
您是否记录了 e.parameter.netId 值?究竟是什么旅游问题?
-
在我无法获得任何记录值之前所拥有的。我在脚本 1 中放置了一个表单,并使用将文本传递给脚本 2 并且它起作用了(传递文本并使用它来添加工作表)。我现在拥有的东西做了一些很奇怪的事情。 UrlFetchApp 的 httpResponse 是一个 google 登录页面,它不起作用,只会将您重定向到实际登录(即使已经登录),当您登录时会将您重定向到脚本 2 的 doGet 函数,该函数会引发错误。
-
更新:我在参数中添加了 "followRedirects":false 并获得了 "Moved Temporarily The document has move here."
-
您确定您的部署版本并且没有使用脚本 2 的 .dev 网址吗?
-
有趣的技术。我面临着同样的问题:stackoverflow.com/questions/21506058/…)。你说:去脚本A这里页面加载按钮。单击该按钮会导致“Hello World!”要登录脚本 A 的项目日志,但脚本 B 的项目日志仍然为空。 我点击了您的链接,您的代码似乎可以工作,因为脚本 B 按钮有我的电子邮件地址。奇怪的是脚本 B logger 不起作用,但看起来参数正在传递——这已经很棒了! (谢谢!)