Onboarding
Cara mendapatkan workbookId sebuah Spreadsheet
Setiap DingTalk Spreadsheet memiliki workbookId yang unik. Anda dapat memperolehnya dengan cara berikut:
-
Dari URL Spreadsheet: Buka Spreadsheet. ID Dokumen yang terdapat dalam URL adalah
workbookId.
-
Dari informasi dokumen: Di sudut kiri atas Spreadsheet, klik Menu → Spreadsheet → Informasi Dokumen. ID Dokumen yang ditampilkan di sana adalah
workbookId.
-
Melalui Knowledge Base API: Panggil API Get node.
nodeId (dentryUuid) yang dikembalikan adalah workbookId.
Cara mendapatkan operatorId
operatorId adalah unionId dari operator. Peroleh dengan cara berikut:
- Dapatkan userId berdasarkan nomor telepon: Panggil API Query users by phone number.
- Dapatkan unionId berdasarkan userId: Panggil API Query user details.
unionId yang dikembalikan adalah operatorId.
Anda mungkin perlu mengajukan izin Kontak di aplikasi Anda sebelum panggilan pertama. Setelah memperoleh operatorId, simpan (misalnya sebagai variabel lingkungan) agar tidak perlu mengambilnya melalui API setiap kali.
Apa yang harus dilakukan saat access token kedaluwarsa
Access token berlaku selama 7.200 detik (2 jam). Setelah kedaluwarsa, panggil kembali API Get the access token of an internal app untuk memperoleh token baru.
Kami menyarankan menerapkan caching token dan mekanisme muat ulang otomatis di aplikasi Anda:
- Simpan token beserta waktu kedaluwarsanya di cache.
- Muat ulang token secara proaktif 5 menit sebelumnya sebelum kedaluwarsa.
- Saat API mengembalikan error token tidak valid, segera muat ulang dan coba lagi.
Cara mengatasi error “The operator has no permission” saat memanggil API
Error ini menunjukkan bahwa pengguna yang diidentifikasi oleh operatorId tidak memiliki izin untuk mengoperasikan Spreadsheet target. Periksa hal berikut:
-
Apakah pengguna memiliki akses ke Spreadsheet: Pastikan pengguna telah ditambahkan sebagai Kolaborator Spreadsheet, atau Knowledge Base yang menampung Spreadsheet telah memberikan izin kepada pengguna.
-
Apakah tipe izin sesuai:
- Operasi baca seperti
GetAllSheets, GetSheet, dan GetRange memerlukan izin Document.Workbook.Read.
- Operasi tulis seperti
AppendRows, UpdateRange, dan CreateSheet memerlukan izin Document.Workbook.Write.
-
Apakah aplikasi telah mengajukan izin yang diperlukan: Di Kelola Aplikasi pada DingTalk Open Platform, verifikasi bahwa scope izin terkait telah diajukan dan disetujui.
Penggunaan API
Dapatkah parameter sheetId menerima nama Lembar Kerja
Ya. Parameter sheetId menerima ID maupun nama (judul) Lembar Kerja. Contoh:
- Kirim ID:
Sheet1, yang dibuat oleh sistem.
- Kirim nama:
Sales Data, yang merupakan judul Lembar Kerja yang ditentukan pengguna.
Rekomendasi: Gunakan ID Lembar Kerja bila memungkinkan, karena nama dapat diubah oleh pengguna. Anda dapat memanggil API GetAllSheets untuk memperoleh ID dan nama semua Lembar Kerja.
Di mana data ditulis saat AppendRows menambahkan data
AppendRows secara otomatis menemukan baris terakhir yang berisi data di Lembar Kerja dan menambahkan baris baru di bawahnya.
- Jika Lembar Kerja kosong, data ditulis mulai dari baris pertama.
- Jumlah Kolom yang ditambahkan harus sesuai dengan data yang ada agar data tetap selaras.
rangeAddress menggunakan notasi A1. Format umum tercantum di bawah ini:
Apa perbedaan antara GetRange dan UpdateRange
GetRange cocok untuk memverifikasi hasil setelah menulis data, atau untuk membaca data Spreadsheet dalam alur Otomatisasi untuk diproses lebih lanjut. Kedua API menggunakan parameter rangeAddress yang sama (notasi A1) untuk menentukan rentang Sel target.
Cara memecahkan masalah error invalidRequest.resource.notFound
Error ini menunjukkan bahwa resource yang diminta tidak ada. Penyebab umum:
Apa saja batasan penggunaan DingTalk Spreadsheet API
Cara menangani kegagalan panggilan API dalam kode
Kami menyarankan strategi penanganan error berikut:
- Muat ulang otomatis saat token kedaluwarsa: Tangkap error token tidak valid, muat ulang token secara otomatis, dan coba lagi.
- Coba lagi saat pembatasan laju: Saat error 429 dikembalikan, tunggu sebelum mencoba lagi (kami menyarankan strategi exponential backoff).
- Penanganan idempotensi: Untuk operasi tulis seperti
AppendRows, perhatikan bahwa percobaan ulang dapat menyebabkan penulisan data ganda. Sertakan pengidentifikasi unik dalam data dan verifikasi dengan GetRange setelah menulis.
- Penanganan timeout: Tetapkan timeout yang wajar untuk permintaan jaringan (kami menyarankan 30 detik), dan coba lagi setelah timeout.