这看起来应该很容易,但我似乎无法让我的任何小测试实现工作。最终目标是创建一个仅在编辑特定范围内的单元格时运行的函数。为了实现这一点,我创建了一个在每次编辑时运行的函数,但首先检查编辑单元格的范围是否在某个范围内,如果为真,则仅执行其余代码,否则,它只是立即结束。
在我看来,这样做的第一步是找出如何返回已编辑单元格的范围。我尝试了各种测试。
这是当前版本,我通过编辑电子表格进行测试:
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var eRange = e.range;
var message = eRange.getA1Notation();
ss.toast(message);
}
Run Code Online (Sandbox Code Playgroud)
(输出:toast 没有出现/什么也没有发生)
我在这里发布了大约 10 个其他版本,但我意识到它没有帮助。
我已经设法在我的 toast 消息中返回 [object Object] 和 [undefined],所以我知道我的 toast 函数没有犯一些愚蠢的错误。
e.range 不返回一个范围吗?那是我出错的地方吗?如果它返回一个范围,我是否应该能够使用范围内的任何方法,就像我使用了类似“ss.getRange(“A1”).someMethod()”的方法一样?或者有什么我不明白的区别?
好的,我意识到我在这里问了几个不同的问题——我只是想更清楚地描述我的思考过程,以防它帮助你纠正我的错误。一个简单的问题是:我可以使用什么样的命令或方法来返回已编辑单元格的范围?
很抱歉问这么基本的问题。我真的很害怕有人会输入正确的搜索词组合,而答案会出现在结果的顶部......但我似乎无法自己找到它,所以我来了。我已经尝试了 StackOverflow 和旧的 Google Groups 支持论坛中的大量代码片段,以及我自己的很多尝试。我看到人们在这里问了很多关于我的最终目标的类似问题——只有在编辑特定范围内的单元格时才运行 onEdit 函数——但答案都更复杂,似乎是针对每种情况量身定制的,但他们没有不适合我的。我确定答案就在那里,但我现在已经连续搜索了三个晚上,发现有很多类似的问题被问到,但我不能 似乎我自己对这些建议的实施无法奏效。感谢您对我的耐心,非常感谢您提供的任何答案!
我在原始Google电子表格的克隆中制作了一个有效的绑定脚本,并在几天的时间内组合在一起.
然后我将我的公式复制到新的电子表格中.
突然之间,即使我认为我没有对任何相关代码进行任何更改,我也看到了"引用错误:"日历"未定义为谷歌API".
我有很多代码,所以很难将其全部粘贴,但相关部分在这里:
var start = (passed as argument to function);
var end = (passed as argument to function);
var calendarId = 'redacted'//source calendar
var optionalArgs = {
timeMin: start.toISOString(),
timeMax: end.toISOString(),
showDeleted: false,
singleEvents: true,
maxResults: null,
orderBy: 'startTime'
};
var response = Calendar.Events.list(calendarId, optionalArgs);
Run Code Online (Sandbox Code Playgroud)