atoms50
@atoms50

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Google Sheets APIを使って、シートに行を追加して値を記入したい。

解決したいこと

Google Sheets APIを使って、スプレッドシートに値を記入したい。
具体的には、スプレッドシートの行を追加した後に指定した値を代入したいのですが、
エラーが発生しました。
解決方法を教えていただきたいです。

発生している問題・エラー

throw new common_1.GaxiosError(`Request failed with status code ${translatedResponse.status}`, opts, translatedResponse);

該当するソースコード

async function appendData() {
    const sheets = google.sheets({version: "v4"});
    const param = {
        spreadsheetId: sheet,
        range: "Class Data",
        insertDataOption : "INSERT_ROWS",
        auth : jwtClient,
        resource : {
            values : [["Thom", "male", "3","CA","Math","bike"]]
        }
    };

    await sheets.spreadsheets.values.update(param);
};
 
appendData();

自分で試したこと

元データとなったスプレッドシートは、Googleがサンプルとして提供しているものを使っています。
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit

すでに情報が記載されているセルに対して、値を更新するプログラムを実行したところ、
正常に更新されたので、スプレッドシートとの疎通は問題ないようです。

insertDataOption : "INSERT_ROWS",

ここの内容に問題があるのかと思いますが、解決方法がわからない状況です。
ご回答よろしくお願いします。

1

1Answer

残念ながら、sheets.spreadsheets.values.update (Method: spreadsheets.values.update)にはinsertDataOptionはありません。このことと、具体的には、スプレッドシートの行を追加した後に指定した値を代入したいのですが、の目標から、もしかすると、Method: spreadsheets.values.appendを使用したかったのではないかと推測しました。これが正しいようですと、次のような修正はいかがでしょうか。

修正したスクリプト

async function appendData() {
  const sheets = google.sheets({ version: "v4" });
  const param = {
    spreadsheetId: sheet,
    range: "Class Data",
    insertDataOption: "INSERT_ROWS",
    auth: jwtClient,
    resource: {
      values: [["Thom", "male", "3", "CA", "Math", "bike"]],
    },
    valueInputOption: "USER_ENTERED", // Modified
  };

  await sheets.spreadsheets.values.append(param); // Modified
}

appendData();

この場合、前提条件として表示されていないsheetjwtClientは有効な値であると想定していますのでご注意ください。これらに問題がある場合は、また別のエラーが発生すると思われます。

Reference

0Like

Your answer might help someone💌