Di sini saya akan menunjukkan contoh penggunaan
Microsoft Flow yang tidak terlalu sederhana untuk menyelesaikan satu masalah praktis.
Pernyataan masalah
Terkadang tugas untuk seorang programmer muncul dari kehidupan sehari-hari. Ini adalah salah satu contohnya. Saya ingin memberi bunga kepada istri saya dari waktu ke waktu, katakan sebulan sekali. Tetapi pada saat yang sama, saya tidak ingin melakukan ini pada tanggal tertentu, misalnya, pada hari pertama bulan itu. Maka ini tidak akan mengejutkan. Saya ingin pengacakan. Misalnya, lain kali saya memberi bunga, harus ada sebulan setelah waktu sebelumnya, plus / minus beberapa hari.
Tidak ada yang istimewa tentang persyaratan seperti itu. Cukup mudah untuk menulis sebuah program yang mengingatkan saya pada acara-acara ini. Tetapi aplikasi desktop memiliki kelemahan yang signifikan. Ini hanya akan bekerja pada satu mesin, sementara saya memiliki beberapa dari mereka (di rumah, di kantor, ...). Dan ada smartphone ... Tidakkah menyenangkan menerima pemberitahuan di salah satu perangkat saya?
Nah, Anda dapat menyimpan informasi acara di beberapa jenis penyimpanan online (seperti
Mlab ). Dalam hal ini, semua contoh aplikasi saya akan bekerja dengan informasi yang sama, yang akan memungkinkan mereka untuk disinkronkan satu sama lain. Namun, saya perlu menginstal aplikasi ini di semua komputer saya. Selain itu, saya menggunakan Windows di komputer dan Android di ponsel cerdas saya, jadi saya harus menulis beberapa aplikasi berbeda jika saya benar-benar ingin menerima pemberitahuan di mana-mana. Bagaimana cara mengatasi masalah ini? Menggunakan Web, tentu saja.
Jika saya membuat aplikasi Web, saya dapat menggunakannya di hampir semua perangkat. Hebat! Tapi masih belum cukup bagus. Biarkan saya jelaskan poin saya. Meskipun tidak begitu sulit untuk menulis aplikasi Web yang menyelesaikan masalah saya, saya masih harus mengurus banyak hal dalam hal ini. Anda perlu berpikir tentang hosting, tentang penyimpanan data, tentang penyimpanan kode, ... Dan mengapa? Hampir semua fungsi yang diperlukan sudah diterapkan di kalender Web modern seperti
Google Calendar . Dia dapat membuat acara, membuatnya berulang, mengirimi saya pemberitahuan tentang kejadiannya, dll. Satu-satunya hal yang hilang adalah pengacakan yang diperlukan oleh saya. Bukankah lebih bagus jika saya bisa menambahkan fitur ini dan menggunakan semua fitur lain yang sudah tersedia?
Ketika saya memikirkan masalah ini, saya menemukan situs web
IFTTT.com . Ide situs ini sederhana namun produktif. Jika sesuatu terjadi, dia melakukan sesuatu. Saya tahu ini terdengar aneh, jadi izinkan saya memberi Anda beberapa contoh. Jika saya menerima email dari orang tertentu, kirimkan saya SMS. Jika penulis favorit saya telah memposting artikel baru di blognya, beri tahu saya di Slack. Atau jika sudah waktunya untuk acara tertentu di Kalender Google, kirimi saya email. Saya harap sekarang jelas apa yang saya tuju. Layanan ini dapat memantau peristiwa tertentu (disebut pemicu) dan melakukan beberapa tindakan saat peristiwa ini terjadi. IFTTT mendukung sejumlah besar kemungkinan pemicu dan tindakan. Saya dapat melacak acara saya di Google Kalender, dan ketika suatu peristiwa tertentu terjadi, saya akan mengirim sendiri email kepada saya, menghapus acara yang lama dan menambahkan yang baru di lain waktu. Wow! Apa yang dibutuhkan! Tapi tidak juga.
Pertama-tama, IFTTT hanya memungkinkan satu tindakan pada sebuah pemicu. Ini bukan masalah besar, karena Anda dapat membuat beberapa applet dengan pemicu identik (applet adalah kombinasi dari pemicu dan aksi di IFTTT). Satu akan mengirim saya surat, yang lain akan menghapus acara yang lama, yang ketiga akan membuat acara baru. Namun ada kendala yang lebih serius. Untuk acara baru, saya perlu membuat waktu respons dengan pengacakan. Dan saya tidak menemukan cara melakukan ini di IFTTT. Ini berarti bahwa layanan ini tidak dapat menyelesaikan masalah saya. Tapi mungkin ada layanan serupa lainnya di Internet? Ya ada.
Situs berikutnya yang saya
ulas adalah
Zapier . Di sini kita dapat menggunakan beberapa tindakan pada satu pemicu, yang bagus. Tetapi ini hanya tersedia untuk uang, yang tidak begitu baik. Saya belum bermain dengan Zapier cukup lama, tetapi saya mendapat kesan bahwa itu juga tidak memberikan kesempatan untuk pengacakan yang saya butuhkan. Meskipun di sini saya mungkin salah. Bagaimanapun, saya pindah ke kandidat berikutnya.
Itu adalah
Microsoft Flow . Layanan ini memungkinkan saya untuk melacak 750 pemicu per bulan secara gratis. Ini lebih dari cukup untuk kebutuhan saya. Selain itu, ia memiliki dukungan untuk ekspresi, termasuk fungsi
rand () ! Inilah yang Anda butuhkan. Sekarang izinkan saya menunjukkan kepada Anda bagaimana mengatasi masalah yang dijelaskan menggunakan Microsoft Flow.
Solusi
Pertama, Anda perlu membuat aliran baru. Aliran adalah kombinasi dari pemicu dan tindakan. Untuk melakukan ini, daftar di situs dan di menu utama klik pada
Alur saya , dan kemudian pada
Buat dari kosong :

Klik tombol Buat dari kosong:

Anda akan diminta untuk memilih pemicu. Masukkan "kalender" di bidang pencarian dan pilih
Kalender Google :

Dalam daftar pemicu yang tersedia untuk Kalender Google, pilih
Ketika suatu acara dimulai :

Di sini Anda mungkin diminta untuk mengizinkan akses dari Microsoft Flow ke Kalender Google atas nama Anda.
Sekarang pemicunya sudah siap. Satu-satunya parameter adalah kalender:

Ya, Anda dapat membuat beberapa kalender di Kalender Google. Setiap acara milik salah satu kalender, dan Anda harus memilih kalender yang acara-nya akan memicu tindakan Anda.
Tidak ada yang salah dengan membuat kalender baru dan memasukkan semua acara di mana tindakan Anda harus dipicu. Tetapi jika tidak semua acara di kalender perlu diproses, Anda dapat menggunakan pemfilteran. Klik
Langkah baru dan kemudian
Tambahkan kondisi :

Ini akan membuat filter untuk Anda. Sekarang Anda harus memutuskan dengan tepat bagaimana kami ingin memfilter acara. Misalnya, saya ingin memproses hanya peristiwa-peristiwa yang mengandung teks "[ACAK]" di bidang "lokasi". Untuk melakukan ini, klik pada bidang
Pilih input
nilai . Microsoft Flow akan menunjukkan kepada Anda daftar nilai yang mungkin Anda dapat kerjakan:

Klik pada
Daftar Acara Lokasi Acara . Dan isi bidang yang tersisa dengan nilai yang sesuai:

Perhatikan tautan
Edit dalam mode lanjutan . Dia sangat membantu. Jika Anda mengekliknya, Anda mendapatkan representasi dengan kondisi yang sama dengan ekspresi teks:

Ini akan banyak membantu ketika tiba saatnya untuk menulis ekspresi Anda sendiri.
Sekarang Anda dapat menambahkan tindakan untuk acara kami. Di bagian
Jika Ya dari filter Anda, klik tautan
Tambahkan tindakan . Di sini saya akan membuat tindakan yang akan mengirimi saya pemberitahuan acara di Gmail:

Seperti yang Anda lihat, Anda dapat menggunakan data dari acara Anda untuk mengisi Subjek, Badan, dan properti lainnya dari tindakan ini.
Sekarang kami memiliki notifikasi. Saatnya untuk menghapus acara lama di kalender dan membuat yang baru di lain waktu. Gunakan tautan
Tambahkan tindakan untuk membuat tindakan
Hapus acara untuk Kalender Google:

Harus dikatakan bahwa sangat mungkin untuk hanya mengubah acara di kalender daripada menghapus yang lama dan membuat yang baru. Namun di sini saya tetap akan menempel pada opsi yang terakhir untuk menunjukkan kepada Anda fitur Microsoft Flow lainnya. Misalkan saya ingin pembuatan acara baru di kalender terjadi bukan setelah menghapus yang lama, tetapi bersamaan dengan ini. Arahkan kursor ke
Kirim email dan
Hapus tindakan
acara . Tanda plus akan muncul di layar. Klik padanya dan pilih
Tambahkan cabang paralel โ Tambahkan tindakan di menu konteks:

Sekarang kita dapat menambahkan paralel
Buat tindakan
acara dari
Google Kalender . Untuk tindakan ini, kami akan mengambil judul, deskripsi, dan lokasi dari acara sumber kami. Satu-satunya yang tersisa untuk dilakukan adalah mengatur waktu mulai dan berakhirnya acara baru:

Sekarang kita sampai pada bagian yang sangat menarik. Kita perlu menambahkan beberapa hari acak ke awal acara saat ini. Kami akan menggunakan tanggal baru ini sebagai awal dari acara yang dibuat. Misalnya, saya ingin menambahkan 30 hari plus / minus 2 hari. Dokumentasi fitur yang tersedia dapat ditemukan di
sini . Saya akui, ini bukan bacaan yang sangat sederhana. Saya punya banyak pertanyaan, terutama tentang cara mengekstrak waktu mulai dari sumber acara sehingga dapat digunakan dalam fungsi. Beberapa bantuan dapat diperoleh dari filter kami. Ingat tautan
Edit dalam mode lanjutan :

Mengkliknya menunjukkan ekspresi yang sesuai:

Ini memberi saya beberapa petunjuk dalam menulis ekspresi saya. Sekarang klik pada bidang
Mulai waktu pada acara
Buat acara dan pilih tab
Ekspresi :

Di bidang input, tulis ekspresi berikut:
addDays(triggerBody()?['start'], add(30, rand(mul(2, -1), add(2, 1))))
dan klik
Ok . Ungkapan ini benar-benar memecahkan masalah kita: menambah 30 hari plus / minus 2 hari ke waktu mulai acara awal. Tetapi bagaimana jika saya membutuhkan fleksibilitas? Bagaimana jika saya ingin memiliki beberapa jenis acara? Untuk acara tipe pertama saya akan menambah waktu mulai 30 hari plus / minus 2 hari, untuk acara tipe kedua - 14 hari plus / minus 3 hari, dll. Bagaimana ini bisa dicapai?
Ini satu cara. Ingat bahwa kami menyimpan string "[ACAK]" di bidang "lokasi" acara kami? Sekarang kami akan menulis informasi tambahan di bidang ini. Isinya akan berupa teks dalam format "[ACAK], NN, MM", di mana NN adalah dua digit dan MM juga dua digit. Kami akan meningkatkan waktu kejadian acara dengan NN hari plus / minus hari MM. Dengan menggunakan format ini, saya dapat memastikan bahwa karakter pada posisi 9 dan 10 (mulai dari 0) dari string akan mewakili NN, dan karakter pada posisi 12 dan 13 akan menjadi MM. Dan berikut ini adalah ekspresi yang menggunakan format penyimpanan informasi baru ini untuk meningkatkan waktu mulai suatu peristiwa:
addDays(triggerBody()?['start'], add(int(substring(triggerBody()?['location'], 9, 2)), rand(mul(int(substring(triggerBody()?['location'], 12, 2)), -1), add(int(substring(triggerBody()?['location'], 12, 2)), 1))))
Ia menggunakan fungsi
substring untuk memilih bagian yang diperlukan dari string, dan fungsi
int untuk mengubahnya menjadi integer.
Wow! Kami hampir mencapai tujuan kami. Tinggal menetapkan waktu akhir acara baru. Dan di sini kita bertemu rintangan terakhir kita. Perlu bahwa waktu akhir acara sama dengan waktu dimulainya ditambah 15 menit. Microsoft Flow mendukung fungsi
addMinutes , dan Anda dapat menulis ekspresi seperti:
addMinutes(< >, 15)
Namun, berdasarkan sifat fungsi
rand , kita berakhir dengan nilai yang tidak ada hubungannya dengan nilai saat acara dimulai. Sebagai gantinya, akan menyenangkan untuk memiliki variabel 'nextStart' yang akan menyimpan nilai ekspresi kita. Lalu kita bisa menggunakan nilainya untuk saat acara dimulai, dan digunakan
addMinutes(< 'nextStart'>, 15)
untuk saat itu berakhir. Dan tahukah Anda? Microsoft Flow mendukung variabel. Pertama kita perlu menginisialisasi itu. Arahkan panah ke antara pemicu dan filter. Klik tanda plus dan pilih
Tambahkan tindakan :

Masukkan "Variabel" di bidang pencarian dan pilih
Inisialisasi variabel :

Atur nama variabel menjadi 'nextStart' dan ketik 'String'. Microsoft Flow tidak memiliki tipe terpisah untuk tanggal dan waktu, ia menggunakan string di mana-mana.

Sekarang Anda perlu mengatur nilai untuk variabel ini. Ini tidak dapat dilakukan di sini, karena belum diketahui apakah acara ini benar. Hanya setelah filter kita dapat yakin akan hal ini. Oleh karena itu, kami menambahkan tindakan lain dari tipe
Setel variabel setelah mengirim pemberitahuan email:

Di sini kita mengatur nilai variabel yang dibuat ke ekspresi panjang kami. Tetap hanya menggunakan kembali variabel ini dalam ekspresi untuk waktu mulai dan berakhirnya acara. Anda bisa merujuk ke variabel dalam ekspresi seperti ini:
variables('nextStart')
Oleh karena itu, ekspresi untuk waktu akhir acara akan terlihat seperti:
addMinutes(variables('nextStart'), 15)

Kesimpulan
Inilah akhir dari kisah ini. Anda hanya perlu menyimpan stream, dan Microsoft Flow akan meluncurkannya untuk kami.
Semoga artikel ini bermanfaat bagi Anda. Bagi saya, Microsoft Flow telah menjadi alat otomatisasi tugas yang hebat.