2015-09-02 4 views
1

друзей! В моем листе у меня есть столбец с форматом продолжительности.Скрипт Google Apps получает неправильные значения продолжительности

http://dl1.joxi.net/drive/0007/2131/485459/150902/fc427ebb50.jpg

Я пытаюсь получить значения этого столбца с помощью этой функции:

function getSheetValues(startRow, startCmn, maxColumn) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var mainSheet = ss.getSheets()[0]; 
var range = mainSheet.getRange(startRow, startCmn, mainSheet.getMaxRows(), maxColumn); 
return range.getValues(); 
} 

var mainSheetData = getSheetByNameValues(2, 1, 9); 
var test = mainSheetData[2][6]; 
Logger.log(test); 

В результате я получаю неправильные значения. Пример: для третьей строки (00: 23: 00.000) Я получаю это: Сб Дек. 30 02:13:47 GMT + 05: 53 1899. Возможно, из-за автоматического форматирования даты. Как я могу избежать этого? есть ли способы получить значение (00: 23: 00.000) в виде планарного текста без изменения формата самого столбца?

Надеюсь на помощь, друзья.

+0

Я думаю, это было бы полезно: http://stackoverflow.com/questions/17715841/gas-how-to-read-the-correct-time-values-form-google-spreadsheet – jeremyasnyder

+0

Upvote. Невозможно найти способ работы с полем типа продолжительности Google Script. Это niether timestamp или Date. Кто-нибудь знает, что это? – NikitOn

ответ

0

Предполагая, что у вас есть полный контроль над электронной таблицей ... Если вам действительно просто требуется строковое представление '00: 20: 00.000 ', то проще всего установить формат этого столбца в самой электронной таблице, чтобы быть простой текст, т.е.

  1. Выберите столбец
  2. Формат -> Числа -> обычный текст

Тогда это не будет преобразовано в дату, и вы должны получить необработанное значение строки вы после.

Если вы не можете контролировать (или иным образом гарантировать), в каком формате находится этот столбец, вам нужно будет сделать что-то похожее на то, что предложил jeremy в его комментарии.

0

Вы также могли бы сделать все это программно, копирование диапазона на другую ячейку, установите NumberFormat в текст, а затем удалить этот скопированный диапазон (или оставить):

function go(){ 
    var ss = SpreadsheetApp.getActiveSheet(), rang1 = ss.getRange('A11'), rang2 = ss.getRange('A12'); 

    rang1.copyTo(rang2); 
    Logger.log(rang2.setNumberFormat('@[email protected]').getValue()); 
    rang2.clear(); 
}; 

Это, конечно, можно сделать, чтобы Целые диапазоны сразу.

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