花了一半时间寻找解决方案并且已经知道99.9%的任何语言问题已经被问到我终于得出结论这是新的...
我正在尝试使用简单的onEdit触发器在Android手机上的谷歌表上运行。一旦更改了单元格,脚本应激活下面的单元格(或下面的下一个单元格)。这个解决方案可以帮助那些试图通过手机快速填写谷歌表格的人,因为通常难以使用某些大手指点击电子表格中的单元格...
所有解决方案都适用于我的Mac,但三星手机上没有。范围“B15”更改的第一个事件触发器实际上有效,但它不会在电子表格中选择另一个单元格。
有什么想法吗?谢谢!
function onEdit(e) {
var range = e.range
// THIS WORKS, but it does not use activate method
//(it is actually piece of code I took from stackoverflow...
if (e.range.getA1Notation() == 'B15') {
if (/^\w+$/.test(e.value)) {
eval(e.value)();
e.range.clearContent();
}
}
// The following code does not work
if (e.range.getA1Notation() == 'B3'){
eval('movedown')();
}
if (e.range.getA1Notation() == 'B4'){
var tR = e.range.getRow()
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').getRange(tR+1,2).activate()
}
if (e.range.getA1Notation() == 'B5'){
range.getActiveCell().offset(1,0).activate();
}
if (e.range.getA1Notation() == 'B6'){range.offset(1,0).activate();}
if (e.range.getA1Notation() == 'B7'){range.offset(5,0).activate();}
if (e.range.getA1Notation() == 'B12'){range.offset(1,0).activate();}
if (e.range.getA1Notation() == 'B13'){range.offset(2,0).activate();}
}
function movedown(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form');
var cs = sh.getActiveCell().getRow()
sh.getRange(cs+1, 2).activate()
}
答案 0 :(得分:2)
截至2017年11月,在移动设备上运行谷歌脚本时,您似乎无法更改活动小区位置(我们尝试过三星手机和iphone 6& 7)。是的,你可以使用触发功能运行谷歌脚本,例如onEdit(e)以便通过引用来操纵您的数据
答案 1 :(得分:1)
我是在Iphone7上做到的:
function onEdit(e)
{
if(e.range.getA1Notation()!='A1')
{
var rg=e.source.getSheetByName('Form').getRange(1,1).setValue(Utilities.formatString('Row:%s,Col:%s,Value:%s',e.range.getRow(),e.range.getColumn(),e.value));
e.range.offset(1,0).activate();
}
}
onEdit(e)可以在我的Iphone7上运行,但它不会移动到最近编辑的单元格下面的单元格。换句话说,e.range.offset(1,0).activate();
似乎不适用于我的iPhone 7。
显然,Iphone7的默认行为是,当您点击返回时,它会输入数据并向下移动一个空格。所以我的Iphone7将提供开箱即用的提问者所需的动作。 onEdit的工作原理是将事件块信息输入到单元格A1中,但如上所述,不会影响激活单元格的移动。
我忘了提到这个onEdit(e)在谷歌浏览器的笔记本电脑上运行正常。