2016-03-04 7 views
0

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

Процесс: пользователь открывает диалоговое окно. Они выбирают полевой офис. Onclick запускает проверку функции. После выполнения проверки запускается google.script.run.withSuccessHandler (addSignatureLine) .getSignatureLine (cellElement); должен запускать и обновлять текстовое поле с помощью Id 'AdditionalMessage' с линией подписи, полученной из .getSignatureLine.

Вот две функции HTML код:

<script> 
 
function addSignatureLine(signatureLine){ 
 
    document.getElementById('AdditionalMessage').value = '\n\n'signatureLine; 
 
}; 
 

 
function updateSignatureLine() { 
 
var cellElement = document.getElementById('ET'); 
 
    console.log('cellElement: ' + cellElement); 
 

 
    google.script.run.withSuccessHandler(addSignatureLine) 
 
    .getSignatureLine(cellElement); 
 
}; 
 

 
function check() { 
 
    var ele = document.getElementsByName('fieldOfficeET'); 
 
    var flag = 0; 
 
    
 
    for (var i = 0; i < ele.length; i++) { 
 
    if (ele[i].checked) 
 
     flag = 1; 
 

 
    } 
 
    if (flag == 1) 
 
    document.getElementById('Submit').disabled = false; 
 

 
}; 
 
</script>

Вот этот скрипт getSignatureLine.gs

function getSignatureLine(cellObject) { 
 
    var ss = SpreadsheetApp.openById('googleSheetId'); 
 
    var sheet = ss.getSheetByName('AMS Contact Information'); 
 
    var firstRow = 2; 
 
    var lastRow = 10; 
 
    var dataRange = sheet.getRange(firstRow, 1, lastRow, 11); 
 
    var dataValues = dataRange.getValues(); 
 

 
    for (var key in cellObject) { //Loop through all the data in the form 
 
    Logger.log('key: ' + key); 
 
    Logger.log('value: ' + cellObject[key]); 
 
    } 
 

 
    //Determines the row the Field Office is in 
 
    for (var rr = 0; rr < dataValues.length; rr++) { 
 
    if (dataValues[rr][0] == cellObject.fieldOfficeET) { 
 
     var r = rr + 2 
 
     break; 
 
    } 
 
    } 
 

 
    var signatureLine = sheet.getRange(r, 11).getValue(); 
 
    Logger.log("signatureLine: " + signatureLine) 
 
    return signatureLine; 
 
}

+0

Где код не работает? Мы не можем отлаживать ваш код для вас. Никто не может понять, какие значения извлекаются и передаются. Я вижу, что у вас есть записи Logger.log, так что вы получаете неожиданные значения? Правильно ли 'cellElement' до его передачи на сервер? Используйте 'console.log ('cellElement:' + cellElement);' statement для печати значения в консоли браузера. –

+0

Я добавил console.log в скрипт и получаю Uncaught SyntaxError: Неожиданный идентификатор и Uncaught ReferenceError: проверка не определена –

+0

@SandyGood Я создал функцию updateSignatureLine, удалил чек из onclick в html и получил ошибку. Не открывать ReferenceError: updateSignatureLine не определен. Я предполагаю, что это то, где код терпит неудачу. –

ответ

1

Существует проблема с этой линии:

document.getElementById('AdditionalMessage').value = '\n\n'signatureLine; 

Я хотел бы попробовать:

document.getElementById('AdditionalMessage').value = '\n\n' + signatureLine; 

Добавить знак плюс конкатенировать текст.

+0

Так оно и было. Я не могу поверить, что это было так просто. –

Смежные вопросы