因此,我制作了一个Google电子表格供一群人用来跟踪每周"计数"对于Reddit子上的一大群人。我尝试自动化的东西有两件事。我遇到问题的那个是我认为最简单的那个,只是从一组(G2:G200)中复制值来覆盖另一组中的值(E2:E200)。我也有其他一些问题,但是我更感兴趣的是解释我在那里做错了什么,而不仅仅是答案。最大的一点就是应该在工作表上制作一个自定义菜单,即使我基本上从谷歌教程中复制了脚本,我似乎无法正常工作。我已经尝试过这两种方式的脚本,一种是在录制相同的基本内容时使用与Excel相同的脚本:
function UpdateLore_() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var result = ui.alert(
'Please confirm',
'Only do this once per week, at end of updates.',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
Range("G2:G200").Select;
Selection.Copy;
Range("E2:E200").Select;
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False;
} else {
// User clicked "No" or X in the title bar.
ui.alert('No Changes Made.');
}
}
这会在" Selection.PasteSpecial"上返回一个反恐。线。我尝试过的另一种方式是使用我在网上找到的内容:
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
function copyFunction () {
var inputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("G2:G200");
var inputValue = inputRange.getValue();
var outputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("E2:E200");
}
代码的顶部如下所示:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Weekly Update')
.addItem('Update for Lore', 'UpdateLore')
.addItem('Update for XP Master', 'UpdateMaster')
}
我觉得我错过了一些非常明显的东西,特别是整个"似乎无论如何都无法改变工作表"部分。谢谢你的帮助
得到了一些答案,现在它可以了,感谢所有的帮助:
知道了,感谢所有的帮助。新代码如下所示:
function UpdateLore() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var result = ui.alert(
'Please confirm',
'Only do this once per week, at end of updates.',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
copyFunction ();
}
function copyFunction () {
var inputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("G2:G200");
var inputValues = inputRange.getValues();
var outputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("E2:E200").setValues(inputValues);
}
if (result ==ui.Button.NO) {
// User clicked "No" or X in the title bar.
ui.alert('No Changes Made.');
}
}
答案 0 :(得分:0)
要将数据添加到您需要使用的工作表:
你在if
机构内部有一个功能:
if (result == ui.Button.YES) {
// User clicked "Yes".
function copyFunction () {
. . . .
}
}
如果您想在此时调用另一个函数,可以使用:
if (result == ui.Button.YES) {
// User clicked "Yes".
copyFunction ();
};
function copyFunction () {
. . .
};
答案 1 :(得分:0)
您需要将inputRange中的值设置为outputRange。使用outputRange上的.setValues()来执行此操作。
function copyFunction () {
var inputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("G2:G200");
var inputValues = inputRange.getValues();
var outputRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("E2:E200").setValues(inputValues);
}
这些都不是有效的应用脚本代码:
Range("G2:G200").Select;
Selection.Copy;
Range("E2:E200").Select;
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False;