TelephonyManager
и ANDROID_ID
получен: String deviceId;
final TelephonyManager mTelephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (mTelephony.getDeviceId() != null) {
deviceId = mTelephony.getDeviceId();
}
else {
deviceId = Secure.getString(
getApplicationContext().getContentResolver(),
Secure.ANDROID_ID);
}
Но я настоятельно рекомендую метод, предложенный Google, см. Идентификация установок приложений .
Оглядываясь назад на здесь , вы, возможно, можете вложить конкатенацию:
=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCAT(CONCATENATE('Monthly link'!A10:A&CHAR(13) ,
'Monthly link'!R10:R&CHAR(13)), CONCATENATE('Monthly link'!AG10:AG&CHAR(13) ,
'Monthly link'!AU10:AU&CHAR(13)) )), CHAR(13)))
Я просто добавил еще один CONCATENATE
, чтобы объединить строки только с одним значением, затем используйте CONCAT
, чтобы объединить их.
EDIT
Это не совсем исправление, но чтение документации Google гласит, что вы можете создать старую электронную таблицу EDIT 2 Попробуйте этот код: Кажется, что ошибка исходит из EDIT 3 В настоящее время я работаю над реализацией функции в javascript найдено здесь . Вы можете проверить его в настоящее время на Я продолжу работа на нем ... в настоящее время он не работает, но я близко;) EDIT 4 Я закончил! Вы можете увидеть это здесь . Вам нужно создать новый скрипт, используя приведенные выше инструкции ( Что сценарий does is получает данные из форм, помещает их в скопированные данные, тогда у него есть странное ограничение, когда для его копирования требуется буква в столбце, поэтому он добавляет письмо, чтобы скрипт заполнил строки с «undefined». Оттуда все строки имеют «undefined» в них, поэтому данные могут быть скопированы для всех из них. Если вы хотите знать, как реализовать скрипт непосредственно в ячейке, вы можете просто положить : он вызывается пользовательской функцией! Подробнее см. здесь . =TRANSPOSE(SPLIT(CONCAT(ARRAYFORMULA(CONCATENATE('Monthly link'!A10:A&CHAR(13),
'Monthly link'!R10:R&CHAR(13))), ARRAYFORMULA(CONCATENATE(
'Monthly link'!AG10:AG&CHAR(13), 'Monthly link'!AU10:AU&CHAR(13)))), CHAR(13)))
ARRAYFORMULA
], имеет предел 50000. Не CONCATENATE
или CONCAT
. Таким образом, я использую CONCAT
, чтобы объединить два разных ARRAYFORMULA
s, которые содержат половину исходных данных. Вы можете продолжать разделять их до тех пор, пока не будет даже 4 ARRAYFORMULA
s, если в этом случае будет только один набор данных. Tools->Script editor->Paste
, затем запустить его Tools->Script Manager->organizeData->Run
. Tools->Script editor->Paste
), сохранить его, затем вы можете запустить его из окна редактора сценариев или из электронной таблицы, выполнив Tools->Script Manager->organizeData->Run
. =organizeData()
Не знаю, работает ли это, но может стоить того. Кто-то разместил это на форуме справки Документов Google.
/.../ If you want more than 50,000 characters in a single cell, you can use QUERY's header clause.
Example:
=ArrayFormula(query(row(A1:A70000),,100000))
This creates a cell with 408,893 characters. You can verify by using the LEN function.
Хорошо, я исправил вышеприведенную строку, как я думаю, это работает:
=ArrayFormula(query(A1:A100000,,100000))
Это предусмотрено, что у вас есть данные в столбце A, от строки 1 до строки 100000. Он будет конкатенировать все это. Я предполагаю, что максимальная длина составляет 100000 символов?
Мой ответ связан с другим аналогичным Q, отмеченным как duplicete:
Текстовый результат JOIN длиннее лимита в 50000 символов
My Решение состоит в использовании формулы:
=query(joinSplit(A2:A, ";"), "select Col1, count(Col1) group by Col1", 0)
, где joinSplit(A2:A, ";")
является пользовательской формулой.
Код для вставки в редактор сценариев:
function joinSplit(column, delim)
{
var result = [];
var row = [];
for (var i = 0, l = column.length; i < l; i++)
{
row = column[i].join(delim).split(delim);
row.forEach( function(elt) { result.push([elt]); } );
}
return result;
}
Он вернет столбец уникальных элементов.
Если данные:
A;B;C;D
D;D
E;F;A;A
G;A;B;C
Результатом является столбец:
A
B
C
D
D
D
E
F
A
A
G
A
B
C