Скрипт Google Apps setFormula () в ячейке листа встречает "#REF!" проблема с использованием функции doGet (e) - PullRequest
0 голосов
/ 14 июля 2020

Ячейка листа может успешно показать результат формулы, которую я установил из myFunction (), но не удалось, когда я ввожу переменную с помощью doGet (e) {}. Он показывает "#REF!" в ячейке и «неразрешенное имя листа xx».

В этой функции setFormula () может успешно отображать результат в ячейке листа.

function myFunction() {
var ss1 = SpreadsheetApp.openByUrl("https://xxxxxxxxxxxxxxxxxxxxxxxxgid=0");
var sheet1 = ss1.getSheetByName("Sheet1");  
var sheet;
sheet = 6;
var sheet = sheet.toString();
sheet1.getRange(6,9).setFormula(sheet + '!B1');
}

Позже я следил за синтаксисом setFormula для настройки, как показано ниже, но почему-то не работает. Он показывает "#REF!" в ячейке листа.

function doGet(e) {

var shopname = e.parameter.shop1;    
var shopname = shopname.toString();
var row = sheet.activate().getLastRow();
sheet.activate().getRange(row,9).setFormula( shopname + '!B1');

//  sheet.activate().getRange(row,9).setFormula("'" + shopname + "'!" + "B1");
//    sheet1.getRange(6,9).setFormula("'" + sheet + "'!" + "B1");
}

1 Ответ

2 голосов
/ 14 июля 2020

sheet не определено в функции doGet()

  • Если вы хотите сделать его доступным как для myFunction, так и doGet - вам нужно сделать его global variable
  • Однако в настоящее время sheet является значением (6), а не объектом листа
  • Что вы, вероятно, захотите сделать, так это записать данные в sheet1?

Пример для этого:

var ss1 = SpreadsheetApp.openByUrl("https://xxxxxxxxxxxxxxxxxxxxxxxx");
var sheet1 = ss1.getSheetByName("Sheet1"); 

function myFunction() { 
  var sheet;
  sheet = 6;
  sheet1.getRange(6,9).setFormula(sheet + '!B1');
}


function doGet(e) {
  
  var shopname = e.parameter.shop1;    
  var shopname = shopname.toString();
  var row = sheet1.getLastRow();
  sheet1.getRange(row,9).setFormula( shopname + '!B1');
}

Примечание. Вам не нужно activate() лист или диапазон для доступа к нему

...