我有一个包含两个项目的电子表格.称他们为P1和P2.项目P1中有一个功能,我们将调用F1.
我有一个函数F2,在P2中试图调用F1.我收到一条错误消息,指出F1未定义.
代码(在P2中):
function F2()
{
var rc = F1();
Browser.msgBox("returned value: "+ rc);
}
Run Code Online (Sandbox Code Playgroud)
代码(在P1中):
function F1()
{
return "this is a test";
}
Run Code Online (Sandbox Code Playgroud)
两个项目都包含在同一个电子表格文件中.
我正在考虑为用户编写一些Java代码来安装时间驱动的触发器(定期运行谷歌应用程序脚本).但无法找到用于操纵触发器的REST API.想知道是否有可能.谢谢.
桑杰
有谁知道为什么
new Date('2012','1','1')
Run Code Online (Sandbox Code Playgroud)
返回2012年2月1日而不是1月1日?
和
new Date('2012','0','1')
Run Code Online (Sandbox Code Playgroud)
将于2012年1月1日返回
这是奇怪的还是合乎逻辑的?
真的觉得我错过了Spreadsheet对象脚本.
我正在尝试自动发送电子邮件给onEdit.我在测试中显式运行脚本时成功通过电子邮件发送,但onEdit事件似乎永远不会被触发(甚至看不到日志消息).脚本看起来非常简单.
function onEdit(e) {
var sheet = e.source;
var viewers = sheet.getViewers();
var ct = viewers.length;
var recipients = [];
for(var i=0;i<ct;i++){
recipients.push(viewers[i].getEmail());
};
var subject = 'Update to '+sheet.getName();
var body = sheet.getName() + ' has been updated. Visit ' + sheet.getUrl() + ' to view the changes ' + e.range;
Logger.log('Running onedit');
MailApp.sendEmail(recipients, subject, body);
};
Run Code Online (Sandbox Code Playgroud) 我使用Google Apps Scripts创建了一个简单的Web应用程序.UI只显示在FusionTable中连续更新的几个数字.自定义数据采集系统在我家本地运行,并每分钟向FusionTable发送新结果.我希望每隔一分钟更新我的GAS webapp上的UI,以便显示新的数字.
通过运行时间驱动程序触发器来定期从FusionTable中获取数据并将数字存储在我脚本自己的ScriptDb中,我解决了一半的问题.所以这可以很好地将我的数据放在正确的邻域中.但我仍然没有看到如何使用新数据定期更新UI中的文本框.
到目前为止,我已在UI上手动配置了一个刷新按钮,用户可以单击该按钮以使用存储在ScriptDb中的最新数字更新显示.我很亲密,我可以尝到它!
有人有想法吗?
如何将onChange方法附加到Google电子表格中的单元格.我想在单元格中的值变得大于1000时立即向某人发送电子邮件?
我正在尝试将图像文件上传到谷歌驱动器...代码;
function upload() {
var url= // url for image
var contents=UrlFetchApp.fetch(url).getContent() // trying to get image content
var base = 'https://docs.google.com/feeds'
var fetchArgs = googleOAuth_('docs', base);
fetchArgs.method='POST'
fetchArgs.contentType='image/jpeg'
var xml={title :"image",content:contents}
fetchArgs.payload=xml
var fileURL='https://www.googleapis.com/upload/drive/v2/files?uploadType=media'
UrlFetchApp.fetch(fileURL, fetchArgs)
}
function googleOAuth_(name,scope) {
var oAuthConfig = UrlFetchApp.addOAuthService(name);
oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oAuthConfig.setConsumerKey(consumerKey);
oAuthConfig.setConsumerSecret(consumerSecret);
return {oAuthServiceName:name, oAuthUseToken:"always"};
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到此错误:
请求返回代码403失败.服务器响应:{"error":{"errors":[{"domain":"usageLimits","reason":"dailyLimitExceededUnreg","message":"超出未经身份验证的使用的每日限制".继续使用需要注册.","extendedHelp":" https://code.google.com/apis/console "}],"code":403,"message":"超出未经身份验证的使用的每日限制.继续使用需要注册." }}
我做错了什么,我没有得到这个....请给我一些可行的解决方案
function onEdit() {
var openRequests = SpreadsheetApp.getActive().getSheetByName('Open Requests');
var lastRowOpen = openRequests.getLastRow();
var closedRequests = SpreadsheetApp.getActive().getSheetByName('Closed Requests');
var lastRowClose = closedRequests.getLastRow();
var closed = openRequests.getRange(2,8,lastRowOpen,1).getValues();
for (var i = 0; i < lastRowOpen; i++)
{
if (closed[i][0].toString() == 'Yes')
{
var line = i+2;
if (closedRequests.getLastRow() == 1)
{
openRequests.getRange(line,1,1,9).copyTo(closedRequests.getRange(2,1,1,9));
closedRequests.getRange(2,9,1,1).setValue(new Date());
openRequests.deleteRow(line);
}
else
{
openRequests.getRange(line,1,1,9).copyTo(closedRequests.getRange(lastRowClose+1,1,1,9));
closedRequests.getRange(lastRowClose+1,9,1,1).setValue(new Date());
openRequests.deleteRow(line);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我已经设置了一个触发器来运行onEdit.它的作用是检查一个被调用的列Closed以查看它是否显示Yes.该Closed列有一个数据验证下拉菜单,其中包含值Yes.
因此,当我单击下拉菜单并选择时Yes,它应该将整行复制到另一个名为的工作表,Closed Requests然后从电子表格中删除该行Open …
我正在检索一些数据,数据如下所示:
1, 2, 3, 4, 5
6, 7, 8, 9, 10
11, 12, 13, 14, 15
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样
[
[[1],[2],[3],[4],[5]],
[[6],[7],[8],[9],[10]],
[[11],[12],[13],[14],[15]]
]
Run Code Online (Sandbox Code Playgroud)
所以我可以像矩阵一样对数组进行处理,data[0][1]将是"2".
通过这个答案,它几乎就在那里,但并不完全.我很难看到我想要的东西.
在GAS中使用这个简单的脚本:
function testingStuff(){
var date = new Date();
var yr = date.getYear();
var dt = date.getDate();
var mt = date.getMonth();
Logger.log("year: " +yr);
Logger.log("date: " +dt);
Logger.log("month: " +mt);
}
Run Code Online (Sandbox Code Playgroud)
我得到这个作为我的回答:
year: 2013
date: 28
month: 2
Run Code Online (Sandbox Code Playgroud)
今天是2013年3月28日.我不知道是什么导致了这个错误.有没有人得到这个?或者我做错了什么?