- Вы хотите перезаписать исходный лист электронной таблицы A на целевой лист электронной таблицы B.
- Вы хотите сохранить имя листа
var each = "Data_Incoming"
.
Если мое понимание верно, как насчет этого ответа? Я хотел бы предложить 2 образца. Поэтому, пожалуйста, выберите один из них для вашей ситуации.
Пример сценария 1:
Порядок выполнения этого примера сценария следующий.
each
лист электронной таблицы B. удален.
- Исходный лист электронной таблицы A копируется на целевой лист электронной таблицы B.
- Имя листа скопированной таблицы электронной таблицы B изменено на
each
.
Модифицированный скрипт:
function TransferDataOut() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheetA = source.getSheets()[0]; //sheet source number
var destination = SpreadsheetApp.openById('the destination sheet');
var each = "Data_Incoming";
var destSheet = destination.getSheetByName(each);
if (destSheet) {
destination.deleteSheet(destSheet);
}
sheetA.copyTo(destination).setName(each);
}
Пример сценария 2:
Порядок выполнения этого примера сценария следующий.
- Скопируйте исходный лист электронной таблицы A в электронную таблицу B.
Если лист с именем листа each
не существует в электронной таблице B, скопированный лист переименовывается в each
.
Если лист с именем листа each
существует в электронной таблице B, исходный лист копируется в электронную таблицу B как Copy of ###
.
each
лист очищается.
- Все значения, формулы и форматы скопированного листа копируются в
each
лист.
- Удалить скопированный лист.
Модифицированный скрипт:
function TransferDataOut() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheetA = source.getSheets()[0]; //sheet source number
var destination = SpreadsheetApp.openById('the destination sheet');
var each = "Data_Incoming";
var copiedSheet = sheetA.copyTo(destination);
var destSheet = destination.getSheetByName(each);
if (destSheet) {
destSheet.clear();
var srcRange = copiedSheet.getDataRange();
srcRange.copyTo(destSheet.getRange(srcRange.getA1Notation()));
destination.deleteSheet(copiedSheet);
} else {
copiedSheet.setName(each);
}
}
Примечание:
- В этом примере сценария
each
лист электронной таблицы B (электронная таблица назначения) удаляется. Поэтому, пожалуйста, будьте осторожны с этим.
- Итак, сначала, в качестве теста, я рекомендую использовать образец таблицы.
Ссылки
Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.
Добавлено:
- Вы хотите запустить сценарий целевой электронной таблицы, когда исходные значения копируются в конечную электронную таблицу, используя сценарий в исходной электронной таблице.
Следующий пример сценария предназначен для достижения вышеуказанной ситуации.
Сценарий назначения Таблица:
Сначала готовится сценарий электронной таблицы назначения.
Автор сценария:
function doGet() {
sample(); // This is the function that you want to run when the source values are copied.
return ContentService.createTextOutput();
}
После копирования и вставки вышеуказанного сценария в редактор сценариев электронной таблицы назначения выполните следующий поток действий.
- Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Опубликовать» -> «Развернуть как веб-приложение».
- Выберите «Я» для «Выполнить приложение как:».
- Выберите «Любой, даже анонимный» для «У кого есть доступ к приложению:».
- Нажмите кнопку «Развернуть» как новую «Версия проекта».
- Автоматически открывать диалоговое окно «Требуется авторизация».
- Нажмите «Разрешения на просмотр».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» на «Это приложение не подтверждено».
- Нажмите «Перейти к ### имени проекта ### (небезопасно)»
- Нажмите кнопку «Разрешить».
- Копировать «Текущий URL веб-приложения:».
- Нажмите «ОК».
Скрипт исходной таблицы:
В качестве следующего шага сценарий исходной таблицы готовится следующим образом. В этом образце использовался образец 2. Я думаю, что вы также можете использовать образец 1.
Автор сценария:
function TransferDataOut() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheetA = source.getSheets()[0]; //sheet source number
var destination = SpreadsheetApp.openById('the destination sheet');
var each = "Data_Incoming";
var copiedSheet = sheetA.copyTo(destination);
var destSheet = destination.getSheetByName(each);
if (destSheet) {
destSheet.clear();
var srcRange = copiedSheet.getDataRange();
srcRange.copyTo(destSheet.getRange(srcRange.getA1Notation()));
destination.deleteSheet(copiedSheet);
} else {
copiedSheet.setName(each);
}
// Added
var url = "https://script.google.com/macros/s/###/exec"; // Please set the retrieved URL of Web Apps.
UrlFetchApp.fetch(url);
}
Примечание:
- При указанных выше настройках при запуске
TransferDataOut()
исходной электронной таблицы doGet()
целевой электронной таблицы запускается UrlFetchApp.fetch(url)
.
Ссылки