在Google工作表脚本中,我正在尝试将值从工作表A中的一个单元格复制到工作表B中的另一个单元格 .
问题是,当我在谷歌表脚本编辑器中启动avgUtilisationPerWeek()函数时,代码正在完成工作,它设置了定义的单元格的值 .
但是,当我使用formula = avgUtilisationPerWeek()从目标工作表调用该函数时,它会报告#ERROR“您没有权限调用setValue(第108行) . ”
在自定义函数中,我正在尝试设置工作表中其他单元格的值,而不仅仅是放置公式的单元格 .
这是源代码:
function avgUtilisationPerWeek(){
for(var i = 1; i < 14; i++) {
Utilities.sleep(3000);
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dynamic Weekly Utilisation Report').getRange('D1').setValue(i);
t1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dynamic Weekly Utilisation Report').getRange('L4').getValue();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Graph Q1 2017').getRange((String.fromCharCode('A'.charCodeAt(0) + i)).concat('24')).setValue(t1);
v = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dynamic Weekly Utilisation Report').getRange('L5').getValue();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Graph Q1 2017').getRange((String.fromCharCode('A'.charCodeAt(0) + i)).concat('29')).setValue(v);
g = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dynamic Weekly Utilisation Report').getRange('L6').getValue();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Graph Q1 2017').getRange((String.fromCharCode('A'.charCodeAt(0) + i)).concat('34')).setValue(g);
t2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dynamic Weekly Utilisation Report').getRange('L7').getValue();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Graph Q1 2017').getRange((String.fromCharCode('A'.charCodeAt(0) + i)).concat('39')).setValue(t2);
}
}
我读过这篇文章,但没有找到解决方案 .
1 回答
我认为你不能从表单中启动它 - 除非我错了 . 应该对你有用的是在onOpen()上创建一个单独的函数来获得一个自定义菜单,它允许你直接从工作表中运行你的函数 . 以下是否适合您?
详情如下:
您的代码在下面是相同的,但我为了自己的可视化目的而稍微清理了一下,可以选择这样做 .