#javascript #google-sheets
#javascript #google-sheets
Вопрос:
Я создаю небольшую фиктивную электронную таблицу, и я хотел бы использовать переменную, указывающую на a boolean
, которая будет изменена в соответствии с некоторой логикой, затем используйте это логическое значение для изменения другого var
, как мы делаем с js
кодированием для web
В случае partialDel()
запуска я хочу установить значение, range
true
а затем, при addForm
запуске, изменить range
variable
значение свойства in case range
true
.
//I set the property here
PropertiesService.getScriptProperties().setProperty('range', false);
function partialDel() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("UMS - Volumetria");
sheet.insertRowBefore(11);
sheet.getRange(11,2).setValue("Item:");
sheet.insertRowBefore(13);
sheet.getRange(13,2).setValue("Quantidade:");
sheet.getRange(13,6).setValue("de");
sheet.getRange("UMS - Volumetria!D13:E13").merge();
sheet.getRange("UMS - Volumetria!G13:H13").merge().setBorder(null, null, true, null, false, true, "black", SpreadsheetApp.BorderStyle.SOLID);
//here is where I set it to true
PropertiesService.getScriptProperties().setProperty('range', true)
}
function addForm () {
var range = "UMS - Volumetria!B9:L14"
//here is where I wanna check if the property is true
if(PropertiesService.getScriptProperties().getProperty('range') == true){
range = "UMS - Volumetria!B9:L16"
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getRange(range);
const destSheet = ss.getSheetByName("UMS - Volumetria");
const destRange = destSheet.getRange(destSheet.getLastRow() 3,2);
source.copyTo(destRange);
}
Комментарии:
1. Этот код работает для меня так, как вы его написали.
range
изменения вaddForm
зависимости отpartialDel
того, выполнялся ли он первым. Есть ли у вас конкретная проблема? ЯвляетсяpartialRange
ли часть родительской области этих функций, как у вас здесь в вашем примере?2. Спасибо, что ответили мне здесь. Я ничего не знаю о скриптах Google, поэтому мне здесь не нравится, ха-ха. Ну,
addForm
иpartialDel
размещаются внутри отдельных кнопок в электронной таблице. Я заметил, что переменная, которую я установил ранее, не сохраняется между вызовами функций.3. порядок таков, что в случае частичной доставки формы внутри этой таблицы пользователь
partialDel
сначала нажимает, а затем добавляет формы с помощьюaddForm
. ПриaddForm
вызовеvar
set повторно инициализируется.4. Итак, я обнаружил
PropertiesService.getScriptProperties()
. Я читал, что это больше указано на случай, если я хочу сохранить некоторыеstate
в скрипте. Но это все равно не работает, когда я запускаюif
инструкцию. Я обновил свой код выше
Ответ №1:
Я решил это, изменив if
оператор syntax
.
Каким-то образом в скрипте Google сравнение данных с booleans
не сработало для меня. Итак, я просто проверил truish
значение range
.
старый код: if(PropertiesService.getScriptProperties().getProperty('range') === true)
новый код: if(PropertiesService.getScriptProperties().getProperty('range'))
//PropertiesService.getScriptProperties().setProperty('range', false);
function partialDel() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("UMS - Volumetria");
sheet.insertRowBefore(11);
sheet.getRange(11,2).setValue("Item:");
sheet.insertRowBefore(13);
sheet.getRange(13,2).setValue("Quantidade:");
sheet.getRange(13,6).setValue("de");
sheet.getRange("UMS - Volumetria!D13:E13").merge();
sheet.getRange("UMS - Volumetria!G13:H13").merge().setBorder(null, null, true, null, false, true, "black", SpreadsheetApp.BorderStyle.SOLID);
PropertiesService.getScriptProperties().setProperty('range', true)
}
function addForm () {
let range = "UMS - Volumetria!B9:L14"
if(PropertiesService.getScriptProperties().getProperty('range')){
range = "UMS - Volumetria!B9:L16"
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getRange(range);
const destSheet = ss.getSheetByName("UMS - Volumetria");
const destRange = destSheet.getRange(destSheet.getLastRow() 3,2);
source.copyTo(destRange);
}