前提
趣味で開発しています。
Scalaを使ってGoogleスプレッドシートAPI使いたいです。
以下のサイトを参考に進行したのですが、エラーが出て進行できません。
(半年前は同じ内容で成功していたはずなのですが・・・、
今回改めて改良しようと再開したらエラーになりました。)
参考:https://labs.septeni.co.jp/entry/2017/11/20/093000
公式Doc:https://developers.google.com/sheets/api/quickstart/java
実現したいこと
スプレッドシートにListの内容を書き込みたい。
発生している問題・エラーメッセージ
shell
1Exception in thread "main" java.lang.IllegalArgumentException: 2Can not set java.util.List field com.google.api.services.sheets.v4.model.ValueRange.values to 3scala.collection.convert.JavaCollectionWrappers$IterableWrapper 4at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) 5at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) 6at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
該当のソースコード
エラーコードから、new ValueRangeにsetできない=valuesのListが原因だと思っております。
したがって、以前は成功していたことから、
API認証は完了し、スプレッドシートへのアクセスは完了している前提で、
以下のコードのみ掲示いたします。
scala
1def write(): Unit = { 2 val service = getSheetsService 3 4 //書き込む対象のセルの範囲 5 val targetCell = "F1:F5" 6 val sheet = "シート1" 7 8 //rangeにはシート名と書き込むセルを指定 9 val range = s"${sheet}!${targetCell}" 10 11 //JavaのList[List[Object]]に変換する必要がある 12 val values = List( 13 List("人口密度(人/k㎡)").asJava, 14 List("4,400").asJava, 15 List("9,500").asJava, 16 List("12,100").asJava, 17 List("15,300").asJava 18 ).asJava 19 20 val body = new ValueRange 21 val requestBody = body.set("values", values) // ここが原因? 22 val request = 23 service.spreadsheets.values 24 .update(spreadsheetId, range, requestBody) 25 .setValueInputOption("USER_ENTERED") 26 request.execute 27 }
回答1件
あなたの回答
tips
プレビュー