API を介して公開スプレッドシート (誰でも編集できるように設定) をプログラムで更新しようとしていますが、失敗します。
401 - 「リクエストには有効な認証資格情報がありません。」
公的に編集可能なスプレッドシートであるため、「有効な認証資格情報」は必要ないと思います。どうやらAndroidキーを使用しても機能しないため、「ブラウザ」APIキーを生成する必要がありましたが、シートからデータを取得できます。
更新を機能させるためのトリックがあるかどうか、またはこれは API では不可能かどうかを知っている人はいますか?
私が一緒にハッキングしているサンプルコード:
// Don't think I even need this?
GoogleCredential credential = new GoogleCredential();
credential.createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory factory = JacksonFactory.getDefaultInstance();
final Sheets sheets = new Sheets.Builder(transport, factory, credential)
.setApplicationName("My Awesome App")
.build();
final String sheetID = "[ID Of Valid Public Spreadsheet Here]";
final String range = "A:S";
final ValueRange content = new ValueRange();
content.set("Column A Name", "Some Value to Set");
new Thread() {
@Override
public void run() {
try {
UpdateValuesResponse valueRange = sheets.spreadsheets().values()
.update(sheetID, range, content)
.setKey("My-Valid-Browser-Api-Key")
.execute();
mLog.D("Got values: " + valueRange);
}
catch (IOException e) {
mLog.E("Sheets failed", e);
}
}
}.start();