У вас есть проблемы напоминаний в MLO-Android? Ответьте: Да/Нет.

Как поддерживать "в форме" свой список задач

Поделитесь с другими, как Вы используете MLO (шаблоны, система управления задачами и т.д.). Нашли способ настроить MLO особым образом? Расскажите! Нам интересно!
Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 19 май 2021, 13:22

Когда-то давно при синхронизации MLO появилось предупреждение - ваш список задач превышает 3000, могут быть проблемы с синхронизацией. Тогда же задумался о том, как регулярно очищать свою базу MLO, а заодно и мозги, от устаревших задач.

Автоматизация пока полностью не настроена. Под катом технические детали. Предлагаю обсудить сам алгоритм.

Параметры которые планирую использовать для мониторинга базы:
  • Всего задач. Ограничение 3000 задач
  • Не выполненные задачи (1)
  • Активные задачи
  • Активные проекты. Ограничение 7 проектов (2)
  • Уборка. Ограничение 0 задач (3)
  • Могу делать. Ограничение 25 задач (4) (5)
  • Буду делать. Ограничение в 5 часов (6)

Пояснения к параметрам:
  1. Не выполненные задачи = Всего задач - Выполненные задачи - Недееспособное. Недееспособное это можно считать папки и заметки. И то и другое в MLO я отмечаю как папка. В предложенном алгоритме нет понятия Скрытая задача. В каком месте их учитывать?
  2. Активными я считаю проекты которые Идут или Завершены, но менее чем на 100%. Только из таких проектов задачи попадают в список Могу делать.
  3. Уборка = Входящие + Устарело + просрочены в Обзор MLO. Этот список пока не настраивал. Идеи приветствуются.*
  4. Идея двух списков Могу и Буду делать взята из методики Do It Tomorrow. Могу делать настроен вручную с помощью правил MLO**. Для Буду делать использую Избранные.
  5. На экране моего ноутбука вмещается 26 строк из MLO. Ограничение в 25 задач позволяет охватить день одним взглядом, без скроллинга. Пустая строка в конце не даёт появится стрессу от "списка, забитого под завязку".
  6. Буду делать это то, что я пообещал себе сделать в течении дня. Сюда должны попасть задачи из других приложений, для которых выделено время в Календаре. И Избранные задачи из MLO. В сумме время на выполнения списка Буду делать не должно превышать 40% (рабочего) дня. Если для Избранных не указана длительность её можно оценить в 30 мин - обычный слот в Помидорро.

* По результатам Обзора недели:
  • Папка Входящие должна быть пустой.
  • Задачи которые не изменялись более 90 дней Устарели - их надо или включать в Обзор или выносить из рабочей базы.
  • Обзор надо делать или раз в неделю или только тогда, когда в нём есть необходимость. Сбой происходит если его не сделать во-время. Тогда нарушается график следующих обзоров.

** Как настроить список Могу делать в MLO это отдельная тема. Хотя, возможно, её стоит обсудить в этой ветке. Если коротко, сюда должны попасть задачи из Календаря, Избранные и большая часть Активных задач.

За основу взял файл экспорта в Excel. Часть информации есть в шапке. Прочие параметры можно рассчитать на основе информации из табличной части. Параметры которые рассчитать трудно или они отсутствуют в отчёте - надо обращаться к разработчикам. Так в бета-версию уже включён параметр Активные задачи.

Отчёт трансформируется с помощью шаблона XSLT. В отчёте остаётся только параметр и текущее значение. Без табличной части. Отчёт сохраняется в CSV.

Отчёты генерируются, трансформируются и загружаются в Таблицы Гугл автоматически. По тем параметрам, для которых не указано Ограничение строится график. Так визуально отслеживается состояние базы.

По тем данным где указано Ограничение скриптом Гугл генерируется письмо и отправляется в MLO. Из письма создаётся задача - надо почистить такой-то параметр.

Скорее всего отчёты надо генерировать ежедневно. В частности - контролировать время на выполнение Избранных. Но параметр Уборка достаточно мониторить раз в неделю. Или вообще не мониторить (не получать напоминание) - очистка базы это обязательная часть Обзора недели.

Пока не ясно как учесть закрытые контексты - такие задачи могут не попасть в Активные в момент генерации отчёта. А значит и число задач Могу делать будет рассчитано не верно.
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

WaRoX
Команда бета тестеров
Сообщения: 752
Зарегистрирован: фев 2009
Есть ответ: 28
Благодарил (а): 21 раз
Поблагодарили: 103 раза

Как поддерживать "в форме" свой список задач

Сообщение WaRoX » 19 май 2021, 15:16

Что-то я не совсем понял - есть же функция автоархива, чтобы убирать давно завершенные задачи. А если потенциальных задач больше 3000 - это что-то не так с системой планирования
Илья

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 20 май 2021, 06:00

WaRoX писал(а):Источник цитаты А если потенциальных задач больше 3000 - это что-то не так с системой планирования

Именно об этом пост. На 25.07.2018 в моём MLO было 5108 задач. При еженедельном архивировании. Там были идеи проектов и задачи Когда-нибудь / Возможно. И рутина, которую я настроил и просто скрыл, когда она перестала быть нужна. И ещё шаблоны - удобно когда всё под рукой в одном файле.

Как должна быть устроена система, что бы тратить на обзор не более 1-2% от того времени, которое я планирую? Не более 10 минут на планирование дня, не более часа на неделю.

Предупреждение от MLO заставило меня задуматься об этом. Первое что сделал - настроил экспорт в OPML, который позднее появился как встроенная функция в MLO. Второе - сделал для себя систему мотивации очищать базу.

Сейчас наиболее "задаче_ёмкий" процесс - планирование итераций, веду в Workflowy. Стараюсь импортировать в MLO новые проекты только когда есть свободные слоты в Активные проекты. Но что надо сделать что бы список Активные задачи (или, как у меня - Могу делать), не превышал один экран в тот момент когда я планирую день? И как оценить, нужно ли уделять время на очистку базы в ходе Обзора недели, или всё в пределах нормы и можно сделать обзор не отвлекаясь на это?
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 11 июл 2021, 20:41

Алгоритм трансформации для macOS на схеме ниже. Для Windows его надо адаптировать. На схеме:
  • зелёный - файл
  • красный - команда
  • жёлтый - шаблон преобразования
  • синий - приложение

Этот же алгоритм в текстовом формате под спойлером. В следующих постах выложу скрипты.

Код: Выделить всё

```plantuml
@startuml
start
#pink:экспорт всех задач;
note right
   вручную из-за ошики в CrossOver 20.0.4 и
   из командной строки MLO нельзя выгрузить Excel.xml
end note
#palegreen:excel.xml;

#deepskyblue:Hazel;
#pink:saxon -s:excel.xml -xsl:XSL/mloExcel2opml.xsl -o:portfolio.opml;
note right
   трансформировать файл в OPML
   оставляя только не завершённые задачи
   и дополняя шапку
end note

partition mloExcel2opml.xsl {
   partition $first-pass {
       :удалить дополнительные
      адресные пространства;
   }
      partition $second-pass {
      :в шапку добавить число проектов
      Full Completed и Not Full Completed;
      :в шапку добавить число задач в Inbox;
      :в табличной части оставить только
      не выполненные элементы;
      :рассчитать число дней для колонки Outdate;
      note right
         эту трансформацию надо дополнить
         колонками ISFolder и NextReviewDate
         когда они появится в файле экспорта
      end note
      :преобразовать отчёт в OPML;
   }
}
#palegreen:portfolio.opml;

#pink:saxon -s:portfolio.opml -xsl:XSL/opml2csv.xsl -o:1.tmp;
note right
   извлечь данные из head OPML
   и сохранить в формате CSV
end note

partition opml2csv.xsl {
    :рассчитать число задач Outdate
   и внести его в шапку отчёта;
   :извлечь шапку и сохранить её в CSV;
}
#pink:saxon -s:portfolio.opml -xsl:XSL/opml2csv.xsl -o:1.tmp;
note right
   транспонировать таблицу
end note

#pink:csvtool col 1,14,11,12,13,15,10,2,3,4,7,20,9,20,20,16 2.tmp > 3.tmp;
note right
   вывести колонки в необходимой последовательности
end note

#pink:csvtool drop 1 3.tmp > statistics.csv;
note right
   удалить строку с заголовками
end note

#palegreen:statistics.csv;
#deepskyblue:Резервное копирование и синхронизация Google;
#palegreen:statistics.csv на Диске Гугл;

#deepskyblue:Таблицы Гугл;
#pink:сценарий в таблице Гугл;
note right
   запускается тригером времени
end note
#palegreen:статистика в виде графиков;
stop
@enduml
```


Для импорта в Таблицы Гугл оптимален формат CSV. Но в MLO нет экспорта в CSV.
Для автоматизации экспорта из командной строки и последующей обработки был бы оптимален формат OPML или, хуже, MLO XML. Но в этих форматах MLO не отдаёт всю нужную информацию. В частности количество активных задач сейчас есть только в Excel XML.
В результате был вынужден из Excel XML извлекать шапку и рассчитывать недостающие параметры. Часть из них пока не могу посчитать - не хватает признаков Папка и Дата следующего обзора.
Вложения
StatisticsMLO.png
Статистика из Excel XML в Таблицах Гугл
StatisticsMLO.png (139.44 КБ) 6407 просмотров
Последний раз редактировалось edw 14 июл 2021, 17:03, всего редактировалось 1 раз.
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 13 июл 2021, 18:39

Идея этого алгоритма была такой.

В ходе первого прохода (шаблон трансформации mloExcel2opml.xsl) файл экспорта всех задач MLO преобразовать в OPML, взяв за основу Excel.xml. Шапку <head/> отчёта дополнить показателями, которых нет в шапке Excel, но которые нужны для поддержания базы задач MLO "в форме". Об этих показателях был первый пост.

В табличной части отчёта <body/> должны были остаться только корневые задачи проектов и цели. Этот "портфель проектов" нужен был для согласования списка с другими приложениями. По ходу выяснилось, что в один проход я не могу рассчитать все показатели, поэтому в <body/> пришлось оставить все не выполненные задачи с минимально необходимым набором признаков.

В ходе второго прохода (шаблон opml2csv.xsl) рассчитываются оставшиеся показатели и шапка вырезается в отдельный файл CSV. Через синхронизацию этот файл попадает на Диск Гугл. В таблицу Гугл встроен сценарий, который запускается по расписанию, и импортирует статистику за неделю в общую таблицу.

После еженедельной архивации MLO и Обзора недели вручную экспортирую все задачи в Excel.xml. Этот отчёт трансформируется по алгоритму и статистика недели добавляется в Таблицу. Там желтым выделяю показатели которые выходят за пределы нормы, зелёным - успехи. На основе этих данных строятся графики которые работают как мотиватор.

Всё это позволяет мне держать список задач MLO в актуальном состоянии. Идеи переношу в блокнот, планы в WorkFlowy, то что утратило актуальность (отдельные задачи созданные более чем три месяца назад) удаляю. Цель всего этого в том, что бы пройдя через жёсткий фильтр в Активные задачи попадали действительно значимые дела.
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 13 июл 2021, 19:05

Шаблон mloExcel2opml.xsl под спойлером. Создать текстовый файл, вставить в него текст ниже, переименовать в mloExcel2opml.xsl и положить в подпапку XSL.

Шаблоны делал находя и переделывая подходящие аналоги. Этот оказался самым сложным. В нём пришлось использовать XSL-трансформацию version="2.0". А для её работы устанавливать XSLT-процессор Saxon. Отсюда команды вида

Код: Выделить всё

saxon -s:excel.xml -xsl:XSL/mloExcel2opml.xsl -o:portfolio.opml

которая преобразовывает файл excel.xml в portfolio.opml на основе шаблона mloExcel2opml.xsl из подпапки XSL.

Если в качестве файла-источника будет MLO XML или OPML, то, почти наверняка, хватит XSL-трансформации "1.0". А значит можно было бы обойтись встроенным в macOS XSLT-процессором.

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform  version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:fn="http://www.w3.org/2005/xpath-functions">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

  <!-- $first-pass - remove #all namespaces -->
  <!-- keep comments -->
  <xsl:template match="comment()" mode="#all">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*" mode="#all">
    <!-- remove element prefix -->
    <xsl:element name="{local-name()}">
      <!-- process attributes -->
      <xsl:for-each select="@*">
        <!-- remove attribute prefix -->
        <xsl:attribute name="{local-name()}">
          <xsl:value-of select="."/>
        </xsl:attribute>
      </xsl:for-each>
      <xsl:apply-templates/>
    </xsl:element>
  </xsl:template>
 
  <xsl:variable name="first-pass">
    <xsl:apply-templates select="node()"/>
  </xsl:variable>
 
  <!-- $second-pass - projects-by-status in head,
    filter out Is completed rows,
    transform to OPML -->
  <!-- grouping using the Muenchian Method -->
  <xsl:key name="projects-by-status" match="Cell[22]" use="Data" />
   
  <xsl:template match="/"> 
    <opml version="2.0">
      <head>
        <xsl:apply-templates select="$first-pass/Workbook/Worksheet/Table/Row/Cell[@Index='3']" mode="step2"/>

        <outline text="Not Full Completed:"> 
          <xsl:attribute name="_note">
              <xsl:value-of select="
              count($first-pass/Workbook/Worksheet/Table/Row [Cell[22]/Data='Completed' and not(Cell[1]/Data)])
              " />
          </xsl:attribute>                 
        </outline>           

        <outline text="Full Completed:"> 
          <xsl:attribute name="_note">
              <xsl:value-of select="
              count($first-pass/Workbook/Worksheet/Table/Row [Cell[22]/Data='Completed' and Cell[1]/Data])
              " />
          </xsl:attribute>                 
        </outline>         

        <outline text="Inbox:"> 
          <xsl:attribute name="_note">
              <xsl:value-of select="
              count($first-pass/Workbook/Worksheet/Table/Row [Cell[12]/Data='\Inbox\'])
              " />
          </xsl:attribute>                 
        </outline>   
      </head>
      <body>   
        <xsl:copy>     
          <xsl:apply-templates select="$first-pass/Workbook/Worksheet/Table/Row[not(@AutoFitHeight) and Cell[1]/@Index='2']" mode="step2"/> 
        </xsl:copy>
      </body>         
    </opml>
  </xsl:template>

  <xsl:template match="Row" mode="step2">     
    <xsl:if test="not(Cell[1]/Data)">
    <outline>
      <xsl:attribute name="text">
        <xsl:value-of select="normalize-space(Cell[2])"/>     
      </xsl:attribute>
      <xsl:attribute name="_note">
        <xsl:value-of select="normalize-space(Cell[10])"/>     
      </xsl:attribute>   

      <xsl:attribute name="Outdate">
        <xsl:variable name="out">
          <xsl:value-of select="
          fn:days-from-duration(
            current-dateTime() - Cell[13]/Data/xs:dateTime(.)
          )"/> 
        </xsl:variable>   
        <xsl:if test="$out > 91">
          <xsl:value-of select="$out"/>
        </xsl:if>
      </xsl:attribute>   

      <xsl:attribute name="Goal">
        <xsl:value-of select="normalize-space(Cell[18])"/> 
      </xsl:attribute>       
      <xsl:attribute name="ProjectStatus">
        <xsl:value-of select="normalize-space(Cell[22])"/> 
      </xsl:attribute>     
      <xsl:attribute name="ProjectCompletion">
        <xsl:value-of select="normalize-space(Cell[23])"/> 
      </xsl:attribute>             
    </outline>
    </xsl:if>   
  </xsl:template>
 
  <xsl:template match="Cell[@Index='3']" mode="step2">
    <outline>
      <xsl:attribute name="text">
        <xsl:value-of select="normalize-space(../Cell[1])"/>                 
      </xsl:attribute>
      <xsl:attribute name="_note">
        <xsl:value-of select="normalize-space(../Cell[2])"/> 
      </xsl:attribute>                 
    </outline>
  </xsl:template>
 
</xsl:transform>
Последний раз редактировалось edw 14 июл 2021, 17:00, всего редактировалось 1 раз.
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 13 июл 2021, 19:20

Шаблон opml2csv.xsl под спойлером. Создать текстовый файл, вставить в него текст ниже, переименовать и положить в подпапку XSL.

Для автоматизации использую программу Hazel. Она последовательно выполняет команды

Код: Выделить всё

saxon -s:portfolio.opml -xsl:XSL/opml2csv.xsl -o:1.tmp # извлечь данные из head OPML и сохранить в формате CSV
csvtool transpose 1.tmp > 2.tmp # транспонировать таблицу
csvtool col 1,14,11,12,13,15,10,2,3,4,7,20,9,20,20,16 2.tmp > 3.tmp # 20 колонки не существует, с её помощью вношу пустое значение
csvtool drop 1 3.tmp > statistics.csv # удалить строку с заголовками
rm *.tmp # удалить временные файлы


Полученный файл statistics.csv синхронизируется на Диск Гугл.

Код: Выделить всё

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text"/> <!-- We're generating text, not xml -->
  <xsl:strip-space elements="*"/> <!-- Remove all spaces not inserted specifically by us -->

  <!-- Separator for CSV file: if you use tags AND set this to ',' the tags will end up in separate columns -->
  <xsl:variable name="separator" select="','"/>

  <xsl:variable name="outdate" select="count(//outline[@Outdate != ''])" />
  <!-- <xsl:variable name="outdate" select="count(//outline([@Outdate != ''] and [@Outdate < 100]))" /> -->

  <xsl:template match="/opml/head">
    <!-- Generate CSV lines: -->
    <xsl:apply-templates select="outline" />
    <!-- тут надо расчитать число
      старых задач и задач с истёкшей датой обзора
      и внести эти данные в шапку отчёта -->
    <xsl:text>Outdate:</xsl:text>
    <xsl:value-of select="$separator"/>   
    <xsl:value-of select="$outdate" />
  </xsl:template>

  <xsl:template match="/opml/body" />

  <!-- Main template for CSV line: -->
  <xsl:template match="outline">
 
    <xsl:variable name="TITLE" select="./@text"/>
    <xsl:variable name="VALUE" select="./@_note"/>

    <xsl:if test="(@text != '') and (@text != 'File name:') and (@text != 'Completed:') and (@text != 'Total time required (min/max)')"> <!-- modify this line as needed -->
      <!-- Print only Date without Time -->   
      <xsl:analyze-string select="$VALUE" regex="^(\d{{2}}.\d{{2}}.\d{{4}}) (\d{{1,2}}:\d{{2}}:\d{{2}})$">
        <xsl:matching-substring>       
            <!-- We should quote text of item if it contains a separator: -->
            <xsl:call-template name="quote_text">
                <xsl:with-param name="text" select="$TITLE"/>
            </xsl:call-template>
            <xsl:value-of select="$separator"/>           
     
            <xsl:call-template name="quote_text">
                <xsl:with-param name="text" select="regex-group(1)"/>
            </xsl:call-template>
            <!-- <xsl:value-of select="$separator"/>    -->
            <xsl:text>&#13;&#10;</xsl:text>   
        </xsl:matching-substring>

        <xsl:non-matching-substring>
            <!-- We should quote text of item if it contains a separator: -->
            <xsl:call-template name="quote_text">
                <xsl:with-param name="text" select="$TITLE"/>
            </xsl:call-template>
            <xsl:value-of select="$separator"/>   

            <xsl:call-template name="quote_text">
                <xsl:with-param name="text" select="$VALUE"/>
            </xsl:call-template>
            <!-- <xsl:value-of select="$separator"/>    -->
            <xsl:text>&#13;&#10;</xsl:text>       
        </xsl:non-matching-substring>   
                 
      </xsl:analyze-string>   
    </xsl:if>
  </xsl:template>

  <xsl:template name="quote_text">
    <xsl:param name="text"/>

    <!-- Replace newline in text to spaces: -->
    <xsl:variable name="text" select="replace($text, '&#10;', ' ')"/>
    <xsl:variable name="text" select="replace($text, '&#13;', ' ')"/>

    <!-- Check for separator and wrap in quotes if needed -->
    <xsl:choose>
      <xsl:when test="contains($text, $separator)">
        <xsl:text>"</xsl:text>
        <xsl:value-of select="replace($text, '&quot;', '&quot;&quot;')"/>
        <xsl:text>"</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$text"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>

Последний раз редактировалось edw 14 июл 2021, 16:57, всего редактировалось 1 раз.
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Автор темы

edw
Команда бета тестеров
Сообщения: 514
Зарегистрирован: фев 2009
Откуда: Киев
Благодарил (а): 23 раза
Поблагодарили: 47 раз

Как поддерживать "в форме" свой список задач

Сообщение edw » 13 июл 2021, 19:37

На Диске Гугл есть Таблица со статистикой. Первая страница названа Data. В таблице через меню Инструменты создать Сценарий. Вставить в него текст из спойлера и сохранить.

Найти папку в которую синхронизирован statistics.csv. У меня это

Код: Выделить всё

https://drive.google.com/drive/u/0/folders/1tLzL85sZBDEVsdlBywjFjdLRMkofFYs3

Код папки (то что после folders/) вставить в третью строку сценария.

Сценарий можно запускать вручную или создав триггер там же где создавали сценарий. С его помощью данные добавляются в таблицу, а исходный файл statistics.csv удаляется.

Код: Выделить всё

function doGet(folderId, filename) {
 
  var folder = DriveApp.getFolderById("1tLzL85sZBDEVsdlBywjFjdLRMkofFYs3");
 
  var files = folder.getFilesByName("statistics.csv");
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");

  if ( files.hasNext()) { 
    var file = files.next();
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
   
    var lastrow = sheet.getLastRow();
    sheet.getRange(lastrow + 1, 1, 1, 16).setValues(csvData);   
    file.setTrashed(true);
  }

  return ContentService.createTextOutput('Данные в Статистика MLO обновлены'); 
}
MLO Windows v6 (macOS / CrossOver)
MLO iOS v3 (iPadOS)
MLO Android v4
MLO Cloud

Антон_Та
Сообщения: 6
Зарегистрирован: янв 2019
Благодарил (а): 2 раза

Как поддерживать "в форме" свой список задач

Сообщение Антон_Та » 20 мар 2022, 16:46

Очень интересно, спасибо!
Пытаюсь тоже автоматизировать выгрузку сделанных mlo дел для разбора (сделано, не сделано, где буксую.)

viewtopic.php?p=33042#p33042


Вернуться в «Обмен опытом»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость