Новая строка для Google Calendar Api?
Я пытаюсь вставить описание события в календарь Google из моего веб-приложения, и я не могу получить \n или <br />
быть интерпретированным как разрыв строки. Как календарь Google интерпретирует переводы строки? Помощь будет оценена!
9 ответов
"/n" работает только для записей iCal. Используя API Календаря Google, вы не можете создавать новые строки.
Используя API V3, это сработало для меня:
$full_description .= 'Evento organizado por: ' . $area_responsavel . "\n\n";
$full_description .= $mensagem;
Вы используете определенную клиентскую библиотеку? При использовании протокола простое помещение новой строки в элемент содержимого должно работать:
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:gCal="http://schemas.google.com/gCal/2005"
xmlns:gd="http://schemas.google.com/g/2005">
<title type="text">Event with new line</title>
<content type="text">This is an event with one
two
three
and and four lines.</content>
<gd:when endTime="2011-12-23T10:00:00.000-07:00"
startTime="2011-12-23T08:00:00.000-07:00"/>
</entry>
Если вы используете клиентскую библиотеку, использование '\n' также должно работать.
Heredocs - это то, как я заставил его работать.
$content = <<<EOT
This
is
my
content
EOT;
Вы не можете зациклить внутри heredoc, но вы можете создать его так
$content = '';
for ($vars as $var) {
$content .= <<<EOT
$var
EOT;
}
Используйте это, чтобы создать разрыв строки в описании события календаря Google:
\\n
Рэндел МакГлинн написал правильный ответ в комментариях:
Я уверен, что что-то изменилось за последние 3 года с тех пор, как был задан этот вопрос, но теперь вы можете это сделать. Вам просто нужно отформатировать строку для JSON. "\n" становится "\n".
Вы можете использовать намерение для добавления описания, используя \ n для новой строки. Этот код
Intent intentCal = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.Events.ALL_DAY, true)
.putExtra(CalendarContract.Events.TITLE, "title")
.putExtra(CalendarContract.Events.DESCRIPTION,"abc\ndef");
startActivity(intentCal);
производит описание события
abc
def
Если вы используете строку вместо литерала выше, убедитесь, что в строке еще нет экранированных косых черт, т.е. "abc\\ndef"
- когда вы выводите строку (например, используя Log.d), это выглядит как "abc\ndef"
, но конечно это не то же самое. Например, если вы получаете выбор из веб-просмотра, используя
webview.evaluateJavascript("(function(){return window.getSelection().toString()})()",
value->calendarString(value));
затем строка, отправленная в calendarString
функционировать в value
избежал косой черты и выводит описание события
"abc\ndef"
(с начальными и конечными кавычками.)
Я не уверен, как Google Calendar интерпретирует новые строки, но, кажется, 121 строка в строке.
Допустим, вы хотите добавить "Адрес:" / n в детали календаря Google.
Возьмите 121, вычтите количество символов из "Address:" и добавьте 113 пробелов к "Address:".
следующий текст должен быть в новой строке.
Еще проще, если текст, который вы отправляете, является переменной PHP, создайте новую строку в php.
$description = 'Description:'.'\n';
Тогда гугл календарь будет читать его как новую строку.
Путь найден!
Просто создайте массив с содержимым каждой строки, а затем сделайте эхо массива, взорванного тегом br внутри чтения ob.
$eventDescriptionArray = [
'line_1' => 'content',
'line_2' => 'content',
'line_3' => 'content'
];
ob_start();
echo implode( '<br/>', $eventDescriptionArray );
$eventDescription = ob_get_contents();
ob_clean();