Запись в другую электронную таблицу с помощью SetValue завершается неудачно без ошибок / исключений - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь обновить электронную таблицу из сценария, запущенного в другой электронной таблице.

Ничто не оказывает никакого влияния на стол (SetValue(), SetBackgroundRGB() и т. Д.).
Я проверил область действия, она включает разрешение «https://www.googleapis.com/auth/spreadsheets"»; кроме того, у этого же сценария нет проблем с записью в другую электронную таблицу, которую он создает во время выполнения.

function updateAnotheSpreadsheet() {
  var targetSpreadsheet = SpreadsheetApp.openById('<target spreadsheet id>');
  var sheet = targetSpreadsheet.getSheetByName('<sheet name>');

  Browser.msgBox(sheet.getRange("A1").getValue()); // Here I see that my getSheetByName worked

  sheet.getRange("A1").setValue('Test value'); // But this does nothing
}

Нет ошибок, но и нет эффекта: ничего не меняется в целевой таблице.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Я нашел проблему.Функция, вызываемая из OnEdit (), не может запрашивать разрешения.Мне нужно было сначала обновить эту другую таблицу из любой функции, вызываемой чем-то «активным», например кнопкой;затем, после того, как скрипт запросит разрешение один раз, он может выполнить свою задачу из OnEdit () при следующем запуске.

0 голосов
/ 11 июня 2019

Привет, я тестировал и смог сделать то, что ты пытаешься сделать. Вы можете попытаться объявить переменную для сообщения, вот что я смог сделать, я надеюсь, что это разрешит ваш запрос.

function updateAnotherSpreadsheet() {      
      //Opening the second Spreadsheet by ID
      var targetSpreadSheet = SpreadsheetApp.openById("<SpreadSheetId>");
      var sheet = targetSpreadSheet.getSheetByName("<SheetName>");
      //Getting the range to show on msgBox.
      var msg =  sheet.getRange("A1:A1").getValue();
      //Displaying old data on A1:A1 from the secondary Spreadsheet. 
      Browser.msgBox("Old data on secondary spreadsheet: " + msg);
      //Getting the range and setting new values
      sheet.getRange("A1:A1").setValue('Test value').setBackground("teal").setFontColor("white"); 
    }

Я бы предложил проверить дополнительную информацию здесь https://developers.google.com/apps-script/guides/sheets.

Надеюсь, это поможет, привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...