所以当谈到脚本时,我是个新手。在过去,我能够得到一个小脚本,但这是一个孤立的事件,无论如何它主要是复制/粘贴。我在Google工作表中工作。这就是我想要完成的事情:
我希望我的工作表根据单个单元格C3的内容隐藏/显示某些列。我能够找到一个基于this post的脚本,但无论我做什么,脚本都不会影响我的工作表的任何更改。下面是我修改过的脚本版本。主要区别在于Omar只想要3个单独的视图,而我想要13个,每个日历月一个,一个显示全部。为了空间,我将包含3个案例。
function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (e.range.getA1Notation() !== 'C3' || sheet.getName() !== 'Overview') return;
switch (e.value) {
case 'All':
sheet.showColumns(1, sheet.getMaxColumns()-1)
break;
case 'January':
sheet.showColumns(1, 2, 3, 4, 5, 26, 27)
sheet.hideColumns(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
break;
case 'February':
sheet.showColumns(1, 2, 3, 4, 5, 6, 7)
sheet.hideColumns(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
break;
}
}
我觉得脚本应该正常工作,也许我错过了一些小的实现步骤。有什么帮助吗?
答案 0 :(得分:0)
onEdit(e)似乎没有运行,但发生的事情是它有错误。
代码对showColumns和hideColumns使用不支持的语法,因此其执行被中断。
showColumns的语法是showColumns(columnIndex)
或showColumns(columnIndex, numColumns)
。 hideColumns的语法类似。有关详细信息和示例,请参阅https://developers.google.com/apps-script/reference/spreadsheet/sheet
在How can I test a trigger function in GAS?上,它解释了如何调试触发器功能。
Cooper在his answer上提到他发布了一个代码,该代码对你想要实现的目标做了类似的事情,并警告了简单触发器的限制。请注意,隐藏/显示行/列的速度很慢,而简单触发器的执行时间限制为30秒。克服此限制的方法是使用可安装的触发器,但也许您的情况很简单,无需使用辅助功能和可安装的触发器即可解决。
以下是您对1月份案例所做的更改。
case 'January':
sheet.showColumns(1, 5); // show columns from column A to column E
sheet.showColumns(26, 2); // show columns from column Z to column AA
sheet.hideColumns(6, 19); // hide columns from column F to column X
break;
我让你自己弄明白二月的情况。
答案 1 :(得分:0)
我最近做了类似的事情你可以看一下here。隐藏很多列也需要时间,因此请注意这些restrictions。
library(ggplot2)
set.seed(42)
PERCENT <- rnorm(50, sd = 3)
WAVE <- sample(6, 50, replace = TRUE)
AGE_GROUP <- rep(c("21-30", "31-40", "41-50", "51-60", "61-70"), 10)
COUNTRY <- rep(c("Country A", "Country B"), 25)
N <- rnorm(50, mean = 200, sd = 2)
df <- data.frame(PERCENT, WAVE, AGE_GROUP, COUNTRY, N)
ggplot(df) +
aes(x = factor(WAVE),
y = PERCENT,
fill = factor(COUNTRY)) +
geom_boxplot(alpha = 0.3) +
geom_point(aes(color = AGE_GROUP, group = factor(COUNTRY)), position = position_dodge(width=0.75)) +
geom_text(aes(group = interaction(WAVE, COUNTRY),
label = ifelse(test = PERCENT > median(PERCENT) + 1.5*IQR(PERCENT)|PERCENT < median(PERCENT) -1.5*IQR(PERCENT),
yes = paste(AGE_GROUP, ",", round(PERCENT, 1), "%, n =", round(N, 0)),
no = '')),
position = position_dodge(width = 0.75),
hjust = -.2,
size = 3)