質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

Google Apps Scriptで取得した下記JSON形式の情報をGoogleスプレッドシートのセルに出力したい

pepe4422
pepe4422

総合スコア5

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0リアクション

0クリップ

319閲覧

投稿2022/10/03 03:18

前提

某ウェブサービスからAPIで情報を取得し、Googleスプレッドシートへ随時連携するアプリケーションを作成したいと考えております。

実現したいこと

Google Apps Scriptで取得した下記JSON形式の情報をGoogleスプレッドシートのセルに出力したいです。
類似する質問などを参考にコードを作成しましたが、うまく動作しませんでしたため、質問させていただきます。

"hasMore": true,
"data": [
{
"project_id": 1,
"project_name": "XXXXXXXX",
"customer": {
"mail": "XXXXXXXXXX",
},
}
{
"project_id": 2,
"project_name": "XXXXXXXX",
"customer": {
"mail": "XXXXXXXXXX",
},
}
],

発生している問題・エラーメッセージ

TypeError: Cannot read property "hasMore" from undefined.

該当のソースコード

Google Apps Script

function myFunction() {

var response = UrlFetchApp.fetch("https://api.xxxxxxx.com/v1.1/projects?limit=3", {
"method": "GET",
"headers": {
"content-type": "application/json",
"Api-Key": "xxxxxxxxxxxxxxxxxxxx"
},
})
json = JSON.parse(response);
const sheet_id = 'xxxxxxxx';
const sheet_name = 'test';
const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);
const lastRow = sheet.getLastRow();
sheet.getRange(lastRow , 1).setValue(json[0].hasMore[0],data[0],project_id[0]);
}

試したこと

Logger.log(response); でのログ確認でJSON形式のデータが取得できていることは確認しました。
また、setValue部分についても下記については試行済みです。

sheet.getRange(lastRow , 1).setValue(json[0].data[0],project_id[0]);
sheet.getRange(lastRow , 1).setValue(json[0].project_id[0]);

ご教授の程お願い申し上げます。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

YAmaGNZ

2022/10/03 04:20

hasMoreは配列なのですか?
Cocode

2022/10/03 04:53

スプレッドシートにはdataの中の↓の内容を保存したいのかと思いますが、 "project_id": 1, "project_name": "XXXXXXXX", "customer": { "mail": "XXXXXXXXXX", hasMoreは何のために使いますか? jsonの中にhasMoreは1つしかないと思われますが…
pepe4422

2022/10/03 04:59

YAmaGNZ様 ご対応ありがとうございます。 >hasMoreは配列なのですか? →hasMoreは配列ではありません。  よろしくお願いいたします。
pepe4422

2022/10/03 05:00

Cocode様 ご対応ありがとうございます。 >hasMoreは何のために使いますか? >jsonの中にhasMoreは1つしかないと思われますが… →おっしゃる通りhasMoreはひとつしかなく、当方としては不要なのですが、取得する際に必要?かと思い記載しております。  よろしくお願いいたします。  
YAmaGNZ

2022/10/03 06:15

配列じゃないなら json[0].hasMore[0] ではなく json[0].hasMore なのではないですか?

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。