Нужно открыть электронную таблицу при копировании с другого аккаунта - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь скопировать лист из одной учетной записи из другой учетной записи при доступе к форме Google. Я могу скопировать лист, используя ниже AppsScript. Но мне нужно открыть то же самое, копируя себя. В настоящее время может открываться вручную.

function myFunction() {

 var app=SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1DpeqCN2Bm2pWxf4TiMEa53xM6MEhSx8GfP6CuyI/edit#gid=0");
 app.copy("NewSheettest19");
}

1 Ответ

0 голосов
/ 13 апреля 2020

Открытие файла в пользовательском контексте

Нельзя запустить сценарий при отправке формы, который запускается в пользовательском контексте. Установленные триггеры запускаются с привилегиями владельца. Это может привести к проблемам безопасности. Вы можете отправить пользователю электронное письмо со ссылкой или вставить ее в общую ячейку электронной таблицы. Но вы не можете получить доступ к пользовательскому интерфейсу в этом контексте.

Пожалуйста, посмотрите на этот ответ для дополнительной информации: { ссылка }.

Открытие файла в контексте редактора:

Вы не сможете открыть скопированный файл напрямую из Apps Script. Хотя вы можете использовать обходной путь для создания пользовательского интерфейса, который использует javascript для открытия новой страницы и перехода к недавно скопированному файлу электронной таблицы.

Код:

var app=SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1DpeqCN2Bm2pWxf4TiMEa53xM6MEhSx8GfP6CuyI/edit#gid=0");
var copied = app.copy("NewSheettest19");
var html = "<script>window.open('" + copied.getUrl() + "');google.script.host.close();</script>";
var userInterface = HtmlService.createHtmlOutput(html);
FormApp.getUi().showModalDialog(userInterface, "Opening Copied Sheet... ");

Этот код создаст настраиваемое диалоговое окно, содержащее Javascript, чтобы открыть новую электронную таблицу, а затем закрыть диалоговое окно.

Ссылки:

G Suite Docs Dialogs

Window.open ()

...