1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASでスプレッドシートに書き込むのにハマった話

Last updated at Posted at 2021-10-03

何をしようとしていたか

  • スプレッドシートの内容を取得する
  • JSONで内容の結果を取得
  • 結果をスプレッドシートに書き込むの

語彙力ないですがこんな感じです

どうしてハマったのか

GAS
function getJSON(name) {
  var response = UrlFetchApp.fetch('https://***.json?screen_names=' + name);
  var result = null;
  var text = response.getContentText('utf-8');
  if (text != '') {
    var data = JSON.parse(text);
    if (data.length == 1) {
      result = data[0];
    }
  }
  return result;
}

function addSheet() {
  var id = '***'; //スプレッドシートのID
  var spreadsheet = SpreadsheetApp.openById(id);
  var sheet = spreadsheet.getActiveSheet();
  var range = sheet.getRange(2, 2, 12); //2行目、2列目から縦に12セルの範囲
  var values = range.getValues();
  const user_ids = [];
  values.forEach(function(item){
    user_ids.push(getJSON(item[0]).id);
  })
  Logger.log(user_ids)

  sheet.getRange(2, 3, user_ids.length, user_ids[0].length).setValues(user_ids);
}

バグりました

Exception: The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues.
addSheet	@ コード.gs:27

って言われました。

作られた配列は
[hoge, fuga, piyo, ...]
でした。
大手検索サイトで調べてみると、
[[hoge], [fuga], [piyo], ...]
こんな形で出力するといいらしいです。
スプレッドシートから取得しても、この形が出てきます。

じゃあどうしたのか

簡単なことです

GAS
function addSheet() {
  var id = '{ID}';
  var spreadsheet = SpreadsheetApp.openById(id);
  var sheet = spreadsheet.getActiveSheet();
  var range = sheet.getRange(2, 2, 12);
  var values = range.getValues();
  const user_ids = [];
  values.forEach(function(item){
+++    user_id = getJSON(item[0]).id
---    user_ids.push(getJSON(item[0]).id);
+++    user_ids.push([user_id]);
  })
  Logger.log(user_ids)

  sheet.getRange(2, 3, user_ids.length, user_ids[0].length).setValues(user_ids);
}

これだけです。結果を[]角括弧で囲んであげるといいだけでした。
作られた配列は
[[hoge], [fuga], [piyo], ...]
サクセスでした!!

まとめ

範囲を指定して書き込むときは[[hoge], [fuga], [piyo], ...]で書き込む!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?