Итак, я создал таблицу Google для группы людей, которая будет использовать отслеживание еженедельных «подсчетов» для большой группы людей в подраздел Reddit. То, что я пытаюсь автоматизировать, - это две вещи. Тот, с которым у меня возникают проблемы, - это тот, который, как я думал, был бы самым простым, просто скопировав значения из одного набора (G2: G200), чтобы перезаписать значения в другом (E2: E200). У меня есть и другие проблемы, но меня больше интересует объяснение того, что я делаю неправильно, чем просто ответ. Самый большой из них заключается в том, что предполагается создать пользовательское меню на листе, и я не могу заставить его работать, хотя я в основном копировал сценарий из учебника Google для этого. Я пробовал сценарий для этих двух способов, один используя тот же сценарий, как Excel распечатан при записи той же самой основной вещи:copy paste google spreadsheet
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.');
}
}
Это возвращает arror на линии «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.');
}
}
Хорошо, я установил верхнюю часть, и сценарий теперь работает, по крайней мере, с помощью «онлайн» путь, но это не делает на самом деле что-то делать, по крайней мере, насколько я могу судить. –